我在使用正则表达式从数据库中获取数据时遇到问题。当我在标记中搜索“man”时,它返回的标记也包含“woman”;因为它的子字符串。
SELECT '#hellowomanclothing' REGEXP '^(.)*[^wo]man(.)*$'; # returns 0 correct, it contains 'woman'
SELECT '#helloowmanclothing' REGEXP '^(.)*[^wo]man(.)*$'; # returns 0 incorrect, it can contain anything other than 'woman'
SELECT '#stylemanclothing' REGEXP '^(.)*[^wo]man(.)*$'; # returns 1 correct
如何更新正则表达式,当我搜索“man”时,它应该只返回包含“man”而不是“woman”的标记?
最佳答案
n-dru模式的变体,因为不需要描述所有字符串:
SELECT '#hellowomanclothing' REGEXP '(^#.|[^o]|[^w]o)man';
注意:如果标记包含“man”和“woman”,则此模式将返回1。如果你不想,戈登·林诺夫的解决方案就是你要找的。