【问题标题】:Regex Match All Unless?正则表达式匹配所有除非?
【发布时间】:2016-05-05 13:47:24
【问题描述】:

假设我想要:

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 次尝试,但我再次陷入困境:(

【问题讨论】:

  • 您的意思是(?<!GR)ID\b?还是需要匹配整个string / word?喜欢\w*(?<!GR)ID\b
  • 维克托,做到了。 (?

标签: c# regex substring negative-lookahead


【解决方案1】:

如果 ID 以 GR 开头,则不匹配

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

(?<!GR)ID\b

this regex demo

注意(?&lt;!GR) 是一个否定的lookbehind,如果lookbehind 模式在字符串中当前位置的左侧找到匹配项,则匹配失败。如果您使用[^GR],一个否定字符类,那么只检查一个符号/字符(GR 以外的字符),而不是字符序列。 p>

【讨论】:

  • 在这种情况下,我只想要单词末尾的 ID。我很接近,你指出了我的错误,所以谢谢你:) 我会在 8 分钟后接受,哈哈。
  • 我删除了不相关的部分并添加了一个演示链接。
猜你喜欢
  • 1970-01-01
  • 2019-01-13
  • 2010-11-15
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多