我使用此正则表达式来提取电子邮件:
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
我该怎么做?
感谢。
答案 0 :(得分:0)
试试这个。我在@
出现之前修改了要匹配的模式。它匹配@
以外的任何字符的一个或多个匹配项,匹配/
。
SELECT REGEXP_REPLACE (
'/AAA/SSS/CCC/testmail@mail.com?Id=12323424',
'^([^@]+)@[A-Za-z0-9._%-]*\.[A-Za-z]{2,4}.*',
'\1')
FROM DUAL;