2

我想删除包含多个单词的字符串中的所有 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

4

1 回答 1

1

假设您实际上要删除两个字母单词,那么您的替换似乎应该是空字符串,而不是单个空格。我们可以尝试匹配模式:

\y[A-Z]{2}\y

这将匹配被单词边界包围的任何两个大写字母,包括空格或字符串的开始/结束。

SELECT REGEXP_REPLACE('UN DE DA ', '\y[A-Z]{2}\y', '', 'g');

演示

上面的查询返回三个空格,它们是原始字符串留下的。

于 2019-01-30T11:26:41.457 回答