Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用Oracle REGEXP\u REPLACE进行多次替换_Sql_Regex_Oracle - Fatal编程技术网

Sql 使用Oracle REGEXP\u REPLACE进行多次替换

Sql 使用Oracle REGEXP\u REPLACE进行多次替换,sql,regex,oracle,Sql,Regex,Oracle,好的,帝国特工已经获得了对所有银河邮件服务器的访问权,并在每个服务器上为达斯·瓦达尔创建了一个邮件帐户 共和国在Oracle列中维护了一个主通讯组列表,如下所示: ~To,朱伊,ChewBacca@wookie.net~;~抄送,韩索洛,,Millenium@Falcon.com~;~抄送,卢克·天行者,Luke@IamYourFather.co.uk~ 我们的帝国代理需要使用Oracle REGEXP_REPLACE来帮助将所有电子邮件帐户名部分替换为Darth Vadar帐户,Vadar@.

好的,帝国特工已经获得了对所有银河邮件服务器的访问权,并在每个服务器上为达斯·瓦达尔创建了一个邮件帐户

共和国在Oracle列中维护了一个主通讯组列表,如下所示:

~To,朱伊,ChewBacca@wookie.net~;~抄送,韩索洛,,Millenium@Falcon.com~;~抄送,卢克·天行者,Luke@IamYourFather.co.uk~

我们的帝国代理需要使用Oracle REGEXP_REPLACE来帮助将所有电子邮件帐户名部分替换为Darth Vadar帐户,Vadar@... 因此,最终结果将是:

~To,朱伊,Vadar@wookie.net~;~抄送,韩索洛,,Vadar@Falcon.com~;~抄送,卢克·天行者,Vadar@IamYourFather.co.uk~

这可以作为一个单独的声明吗?
你可能会认为使用暗力比这更容易。

在某些情况下可能过于简单,但对于你的例子来说,这是可行的:

regexp_replace(value, '[[:alnum:]\.]*@', 'Vadar@')
e、 g:


以破折号和句号为例。

如果我们将欧比万加入到组合中,我们会遇到麻烦<代码>~到,朱伊,ChewBacca@wookie.net~;~抄送,韩索洛,,Millenium@Falcon.com~;~抄送,卢克·天行者,Luke@IamYourFather.co.uk~;~抄送,欧比-万·克诺比,欧比-Wan@JediCouncil.au~@CapitalBoo-说可能太简单了。我已经允许句点,但现在扩展了模式以包括其他有效字符。这可能仍然不是RFC5322允许的所有内容,并且只包括英语,但不确定您要处理的范围。
select regexp_replace('~To,Chewie,ChewBacca@wookie.net~;~Cc,Han Solo,Millenium@Falcon.com~;~Cc,Luke Skywalker,Luke@IamYourFather.co.uk~',
  '[[:alnum:].%_+-]*@', 'Vadar@')
from dual;


~To,Chewie,Vadar@wookie.net~;~Cc,Han Solo,Vadar@Falcon.com~;~Cc,Luke Skywalker,Vadar@IamYourFather.co.uk~