匹配不包含某些单词的行

时间:2016-05-24 15:34:11

标签: sql regex database postgresql match

我有以下字符串:

ignoreword1,word1, ignoreword2

我想匹配任何不是ignoreword1ignoreword2

的字词

这是我到目前为止所拥有的

(?s)^((?!ignoreword1).)*$

主要目标是使用正则表达式作为postgresql数据库的一部分,在删除“ignoreword1”,“ignoreword2”和逗号“,”之后选择列匹配子字符串的行

1 个答案:

答案 0 :(得分:1)

匹配任何非ignoreword1Ignoreword2使用

的字词
\b(?!(?:ignoreword1|ignoreword2)\b)\w+

在PostgreSQL中,单词边界为[[:<:]][[:>:]],因此请使用以下内容:

[[:<:]](?!(?:ignoreword1|ignoreword2)[[:>:]])[a-zA-Z]+

模式细节:

  • [[:<:]] - 领先的字边界
  • (?!(?:ignoreword1|ignoreword2)[[:>:]]) - 如果整个字符串为ignoreword1ignoreword2
  • ,则匹配失败
  • [a-zA-Z]+ - 一个或多个ASCII字母。