正则表达式以匹配特定的模式,但排除特定的情况

时间:2018-08-28 14:06:20

标签: regex

我为此感到苦恼,我必须匹配以_ERROR结尾的字符串,但我想跳过包含SET_ERROR的字符串

到目前为止,这里是我最好的尝试:/\w*(?!SET)_ERROR\b/,但是它不起作用。

1 个答案:

答案 0 :(得分:3)

您可以使用

\b(?!SET_ERROR\b)\w*_ERROR\b

请参见regex demo。它匹配单词边界(\b),然后确保在当前位置的右边没有完整的单词SET_ERROR(请参见否定的前瞻(?!SET_ERROR\b)),然后消耗0+字符char和_ERROR后跟单词边界。

如果您有一个后备支持:

\w*_(?<!\bSET_)ERROR\b

请参见another demo。在这里,\w*消耗了0+个单词字符,_被匹配,然后(?<!\bSET_)的否定向后查找确保之前消耗的单词chars不是SET_(整个单词) 。然后,ERROR\b匹配整个单词ERROR