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

Pattern for making sure the exact word won't be matched

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

red[^,]*car

假设我有这些行:

this is a red car
red car it is
i like the red car a lot
red car

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

期望的输出:

应该return这些行:

this is a red car
red car it is
i like the red car a lot

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

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

所以如果它们不是"alone",那么应该是匹配的。

下面的正则表达式将测试它是否跟在或前面有一个字母,然后它将匹配:

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

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

尝试这样的事情:

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