我需要摆脱拖尾重复的非字母数字符号,如
"thanks ! !!!!!!!"
至"thanks !"
如果这些不同的符号会被忽略。
我对正则表达式很新, 所以我想出了
regexp_replace('Thanks . . . . ', '((\\W)\\s*)(\\2\\s*)+', '\\2')
尝试一下。
然而,我意识到'谢谢'之后的尾随空间会导致一些问题。我会回来"thanks "
而不是"thanks ."
这有点奇怪,因为我使用了在线正则表达式工具并且第一个空格不匹配。有人可以帮忙吗?
注意:我确实插入了双反斜杠。
答案 0 :(得分:2)
替换
(\W)(\s*\1)+
与
\1
我不知道PostgreSQL,但是从你的例子来看,我猜:
regexp_replace('Thanks . . . . ', '(\\W)(\\s*\\1)+', '\\1')
这也将用一个空格替换前导多个空格。如果您不想要(即如果您希望前导空格完全独立),请使用
([^\s\w])(\s*\1)+ // '([^\\s\\w])(\\s*\\1)+'
代替。
答案 1 :(得分:0)
尝试这样:
select regexp_replace('Thanks ! !!!!!!!!', '(\\s*)((\\W)\\s*)(\\2\\s*)+', '\\1\\2');
结果:
Thanks !