0

我使用这个正则表达式来提取电子邮件:

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

我可以像这样提取字符串:

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

输出:testmail@mail.com

但我不能像这样提取字符串:

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

输出:/AAA/SSS/CCC/testmail@mail.com?Id=12323424

我怎样才能做到这一点?

谢谢。

4

1 回答 1

0

尝试这个。在出现之前我已经修改了要匹配的模式@。它匹配除匹配之外的任何字符的一个或多个@匹配项/

SELECT REGEXP_REPLACE (
          '/AAA/SSS/CCC/testmail@mail.com?Id=12323424',
          '^([^@]+)@[A-Za-z0-9._%-]*\.[A-Za-z]{2,4}.*',
          '\1')
  FROM DUAL;
于 2017-11-24T11:15:23.080 回答