正则表达式匹配除非?

时间:2016-05-05 13:47:25

标签: c# regex substring negative-lookahead

假设我想:

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

其中任何一个都无效。

我发誓我正在用正则表达式做得更好,但是:)我已经设法在没有寻求SO帮助的情况下淘汰了最后6次尝试,但我又一次陷入困境:(

1 个答案:

答案 0 :(得分:3)

  

如果ID先于GR

,则不匹配ID

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

(?<!GR)ID\b

请参阅this regex demo

请注意,(?<!GR)是一个负向后视,如果后方模式在字符串中找到当前位置左侧的匹配项,则会使匹配失败。如果使用[^GR],一个否定的字符类,则只检查一个符号/字符(GR以外的字符),而不是字符 sequence < / em>的