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

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

最佳答案

Don't match ID if it is preceeded with GR

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

(?<!GR)ID\b

参见 this regex demo

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

关于c# - 正则表达式匹配所有除非?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37052326/

相关文章:

c# - IIS 编译错误 -2146232576 AspNetInitializationExceptionModule

html - 如何在 Emacs 中折叠 html 标签?

vim - vim脚本中的子字符串

c# - 来自动态代码的异常堆栈跟踪中的文件路径和行号错误

c# - 我怎样才能 Bootstrap 一个列不应被分解的表?

javascript - Javascript 数字格式正则表达式不起作用

json - 以正确的 JSON 格式将 ansible 任务的输出写入文件

mysql - 使用正则表达式将字符串转换为 mysql 查询

java 字符串查询

c# - 通过托管 C++ 包装器从非托管 C++ dll 运行 C# 函数