正则表达式从多行文本中删除一行

时间:2015-10-30 12:06:19

标签: regex oracle plsql

我有一个正则表达式

select regexp_replace('123@gmail.com - work new address',
                      [A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}, '')
  from dual;

我用来匹配电子邮件地址。一些字符串存储为多行

我想匹配第一行的电子邮件地址并删除所有文本包含 - 工作,但不是回车后的第二行。

1 个答案:

答案 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