带有点的PostgreSQL regexp_replace

从PostgreSQL中选择时,我想替换电子邮件地址中@.之间的字符串。

到目前为止,我可以替换@及其后面的所有内容

select REGEXP_REPLACE(contactemail,'@(.*)(\.)?','@xxx') from customer;
kotoko520 回答:带有点的PostgreSQL regexp_replace

您的@(.*)(\.)?模式与@匹配,然后将尽可能多的0+字符(除换行符)捕获到组1中,然后尝试匹配可选的点,即此{{ 1}}将永远不匹配任何文本,但为空。难怪您将(\.)?之后的所有字符都与该模式匹配。

您需要使用

@

或者,如果您只想删除最近 SELECT REGEXP_REPLACE(col,'@[^.]*\.','@xxx.') @之间的部分文本:

.

模式匹配

  • SELECT REGEXP_REPLACE(col,'@[^@.]*\.','@xxx.') -一个@字符
  • @-除[^.]*
  • 之外的零个或多个字符
  • .-点。
本文链接:https://www.f2er.com/3159806.html

大家都在问