确保确切单词不匹配的模式

时间:2016-02-17 21:26:19

标签: regex mariadb

我有一个MySQL查询,应检查每一行是否包含以下模式:

red[^,]*car

假设我有这些行:

  这是一辆红色轿车   红色的车是   我非常喜欢这辆红色轿车   红车

如何更改当前模式以匹配所有示例行,除非存在完全匹配(即最后一行)?

期望的输出:

应该返回这些行:

  这是一辆红色轿车   红色的车是   我非常喜欢红色汽车

3 个答案:

答案 0 :(得分:2)

.red[^,]*car|red[^,]*car.

我们的想法是在模式之前或之后应该至少有一个字符(.)(|),因此它不会完全匹配。

答案 1 :(得分:0)

如果它们不是单独的#34;那么它应该是一个匹配。

以下正则表达式将测试它是否跟随或以字母开头,然后匹配:

[a-zA-Z]\s+(red[^,]*car)|(red[^,]*car)\s+[a-zA-Z]

如果您认为任何其他字符(包括ponctuation)的存在应该匹配,那么将[a-zA-Z]替换为\S

答案 2 :(得分:0)

尝试这样的事情:

(.+red car.+|red car.+|.+red car)