我想删除几个单词的字符串中的所有2个字母单词。
我想出了这个解决方案:
SELECT regexp_replace('UN DE DA ','\s{1}[A-Z]{2}\s{1}',' ','g');
SELECT regexp_replace('UN DE DA ','^[A-Z]{2}\s{1}',' ','g');
SELECT regexp_replace('UN DE DA','[A-Z]{2}$',' ','g');
但是我想使用一个regexp_replace而不是三个 我测试了
SELECT regexp_replace('UN DE DA ','\s{1}[A-Z]{2}\s{1}|^[A-Z]{2}\s{1}|[A-Z]{2}$',' ','g');
但是它不起作用=>我仍然有DE
您真诚的 Loïc
答案 0 :(得分:1)
假设您实际上要删除两个字母词,那么替换似乎应该是空字符串,而不是单个空格。我们可以尝试在模式上进行匹配:
\y[A-Z]{2}\y
这将匹配被单词边界包围的任何两个大写字母,其中包括空格或字符串的开头/结尾。
SELECT REGEXP_REPLACE('UN DE DA ', '\y[A-Z]{2}\y', '', 'g');
上面的查询返回三个空格,该空格留在原始字符串后面。