MySQL NOT REGEXP在排除结果时不起作用



我只想要不包含REGEXP中匹配的任何单词的行,但不知何故它无法正常工作。

我发现这是一个没有20行的替代方案

AND user_agent NOT LIKE 'word'

但我的REGEXP似乎坏了,这是一条线:

AND user_agent NOT REGEXP '/(ligatus|googlebot|appengine|Mediapartners-Google|semrushbot|ipad|iphone|android|admantx|MJ12bot|CCBot|bingbot|HybridBot|crawler)/gmi'

正如注释所指出的,REGEXP表达式中有一个轻微的语法问题。但是,除此之外,您应该用单词边界包围交替,因为您希望匹配/不匹配整个单词,而不是可能显示为子字符串的单词。

WHERE user_agent NOT REGEXP '[[:<:]](ligatus|googlebot|appengine)[[:>:]]'

我只包括了前三个术语,这样它就可以放在一行中,但你可以使用完整的交替。

最新更新