【问题标题】:Regexp_replace and regexp_like for Email用于电子邮件的 Regexp_replace 和 regexp_like
【发布时间】:2018-05-08 09:01:18
【问题描述】:

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

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

我该怎么做?

谢谢。

【问题讨论】:

    标签: plsql regexp-replace regexp-like


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-22
      • 2018-05-06
      • 2017-01-10
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 2015-01-23
      • 1970-01-01
      相关资源
      最近更新 更多