编程语言
首页 > 编程语言> > c# – 正则表达式全部匹配除非?

c# – 正则表达式全部匹配除非?

作者:互联网

假设我想:

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

这些都不起作用.

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

解决方法:

Don’t match ID if it is preceeded with GR

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

(?<!GR)ID\b

this regex demo

注意,(?<!GR)是一个负面的lookbehind,如果lookbehind模式找到与字符串中当前位置左边的匹配,则匹配失败.如果使用[^ GR],一个否定的字符类,则只检查一个符号/字符(G和R以外的字符),而不是字符序列.

标签:c,substring,regex,negative-lookahead
来源: https://codeday.me/bug/20190628/1311577.html