MySQL REGEXP匹配NO感叹号,然后是一个单词

时间:2014-05-19 12:16:32

标签: mysql regex

我在MySQL中组合正确的REGEXP时遇到了问题。我有一个可能有这样的数据库:

id | geo
---+--------
1  | NL
2  | US NL
3  | !US
4  | US

这些是地理定位或地理位置阻止的条目。 #3不是US,#1只是NL。如果我想为我正在使用的美国寻找一切:

SELECT * FROM db WHERE geo REGEXP '[[:<:]]US[[:>:]]'

这将返回2,3和4,但我不想要3.我试过这个:

SELECT * FROM db WHERE geo REGEXP '^![[:<:]]US[[:>:]]'

但是,这会以感叹号开头。我正在寻找一个REGEXP来获得“US”这个词并且没有感叹号。我只是无法弄清楚如何制作一个'不包含'而不是'开头',因为它们都是用'^'完成的

1 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式:

SELECT * FROM db WHERE geo REGEXP '(^|[^!])[[:<:]]US[[:>:]]';

这将匹配!

之前US以外的任何非字字符