2017-11-24 5 views
0

ためREGEXP_LIKE:REGEXP_REPLACEと私はエキスの電子メールのために、この正規表現を使用してメール

regexp_replace(xxx, '.*=([A-Za-z0-9._%-]*@[A-Za-z0-9._%-]*\.[A-Za-z]{2,4}).*','\1') 
regexp_like(xxx,'=+[A-Za-z0-9._%-][email protected][A-Za-z0-9._%-]+\.[A-Za-z]{2,4}') 

私はこのような文字列を抽出することができます。

select regexp_replace('/[email protected]?Id=12323424','.*=([A-Za-z0-9._%-]*@[A-Za-z0-9._%-]*\.[A-Za-z]{2,4}).*','\1') 

出力:[email protected]

をしかし、私次のような文字列を抽出できません:

select regexp_replace('/AAA/SSS/CCC/[email protected]?Id=12323424','.*=([A-Za-z0-9._%-]*@[A-Za-z0-9._%-]*\.[A-Za-z]{2,4}).*','\1') 

出力:/AAA/SSS/CCC/[email protected]?Id=12323424

どうすればいいですか?

ありがとうございました。

答えて

0

お試しください。私は@が現れる前に一致させるパターンを修正しました。これは@以外の任意の文字の一致と一致します。一致する文字は/です。

SELECT REGEXP_REPLACE (
      '/AAA/SSS/CCC/[email protected]?Id=12323424', 
      '^([^@]+)@[A-Za-z0-9._%-]*\.[A-Za-z]{2,4}.*', 
      '\1') 
    FROM DUAL; 
関連する問題