使用postgres regexp_replace将字符串列表替换为始终相同的字符串

sal*_*sal 19 regex string postgresql replace character

您好我想使用regexp_replace(或任何其他postgres函数,如果合理)用''替换字符串中的字符,即擦除它们.

使用REGEXP_REPLACE(("def4abcdef4ab","4","","G"),我可以替换/擦除中出现的所有"4",但我想也替换的所有出现的"e"和b"在相同的工艺,不使用几个嵌套的进程,如regexp_replace(regexp_replace(regexp_replace())).

即我希望能够提供一个不同字符串的简短列表,然后应该用唯一的字符串替换.

有任何想法吗?非常感谢提前!

And*_*ong 23

规范的方法是使用字符类,如此,

regexp_replace('def4abcdef4ab','[4eb]', '','g')
Run Code Online (Sandbox Code Playgroud)

虽然@ alexius的方法也可以处理字符串.

不确定是否非贪婪地量化表达式会使其更有效,例如 [4eb]+?.


Rob*_*ell 6

单个字符替换不需要正则表达式使用translate函数,即

translate('def4abcdef4ab','4eb', '')
Run Code Online (Sandbox Code Playgroud)

如果你的字符串是多个字符长,那么使用replace().即使是嵌套,这也可能比正则表达式提供更好的性能.


ale*_*ius 5

regexp_replace('def4abcdef4ab','4|e|b', '','g')


sal*_*sal 3

好的,我自己找到了答案(在PostgreSQL 各种字符串 \\ varchar 清理的帮助下):

\n\n
select regexp_replace(\nE\'a\xc5\x9bx\xe2\x82\xac \xc4\x85sd, dsa w|adwf\\n  YZas dw dgaa[aw] asdd\',\n\'[^a-zA-Y0-9 ]\',\n\'\',\n\'g\');\n
Run Code Online (Sandbox Code Playgroud)\n