我有一个正则表达式
select regexp_replace('123@gmail.com - work new address',
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}, '')
from dual;
我用来匹配电子邮件地址。一些字符串存储为多行
我想匹配第一行的电子邮件地址并删除所有文本包含 - 工作,但不是回车后的第二行。
答案 0 :(得分:1)
首先,你必须用#等字符代替回车。 例如:
REPLACE(yourstring,CHR(10),'#')
使用“123@gmail.com - work#new @ address”之类的结果字符串后,您可以执行以下操作:
select regexp_substr(regexp_substr('123@gmail.com - work#new@address',
'[^#]+', 1, level),'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z] {2,4}')
from dual
connect by regexp_substr('123@gmail.com - work#new@address',
'[^#]+',1, level) is not null;
REGEXP_SUBSTR(REGEXP_SUBSTR('123
--------------------------------
123@gmail.com
new@address