我在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”这个词并且没有感叹号。我只是无法弄清楚如何制作一个'不包含'而不是'开头',因为它们都是用'^'完成的
答案 0 :(得分:2)
您可以使用此正则表达式:
SELECT * FROM db WHERE geo REGEXP '(^|[^!])[[:<:]]US[[:>:]]';
这将匹配!
US
以外的任何非字字符