从PostgreSQL中选择时,我想替换电子邮件地址中@
和.
之间的字符串。
到目前为止,我可以替换@及其后面的所有内容
select REGEXP_REPLACE(contactemail,'@(.*)(\.)?','@xxx') from customer;
您的@(.*)(\.)?
模式与@
匹配,然后将尽可能多的0+字符(除换行符)捕获到组1中,然后尝试匹配可选的点,即此{{ 1}}将永远不匹配任何文本,但为空。难怪您将(\.)?
之后的所有字符都与该模式匹配。
您需要使用
@
或者,如果您只想删除最近 SELECT REGEXP_REPLACE(col,'@[^.]*\.','@xxx.')
和@
之间的部分文本:
.
模式匹配
SELECT REGEXP_REPLACE(col,'@[^@.]*\.','@xxx.')
-一个@
字符@
-除[^.]*
.
-点。