正则表达式匹配所有除非?

Regex Match All Unless?

假设我想要:

TESTGRID - NOT MATCH
testgrid - NOT MATCH
ACTIVEID - MATCH
activeID - MATCH
testRID - MATCH

我试过:

(?!([^GR]))ID*?\b (I really thought I had it with this one - Don't match ID if it is preceeded with GR, right?
(?!([^GRID]))ID*?\b
(?!([GRID]))ID*?\b

None 其中正在运行。

我发誓我在使用正则表达式方面做得越来越好:)我在没有寻求 SO 帮助的情况下成功完成了最后 6 次尝试,但我再次陷入困境:(

Don't match ID if it is preceeded with GR

如果您要匹配单词末尾的 ID,并且前面没有 GR,请使用

(?<!GR)ID\b

this regex demo

请注意,(?<!GR) 是一个负向后视,如果后视模式在字符串中当前位置的左侧找到匹配项,则匹配失败。如果您使用 [^GR],一个取反字符 class,那么只会检查一个 symbol/character(GR 以外的字符),而不是一个字符序列.