美好的一天,
我对正则表达式还很陌生,所以请耐心等待。
在我的系统中,我在网格中使用 4 个过滤器。 在其中三个中,它是使用内置功能与某些潜台词进行简单匹配 例如
- 过滤器 1:显示包含“F0”的所有内容。
- 过滤器 2:显示包含“P0”的所有内容。
- 过滤器 3:显示包含“D0”的所有内容。
这些过滤器工作正常。
我的问题是我需要显示过滤器 4 中的其他所有内容(名为“其他”)。它可能是任何东西。
我可以使用正则表达式覆盖内置过滤,并且我正在考虑使用正则表达式来查找不包含三段文本(“F0”、“P0”、“D0”)的所有内容。 该文本始终是单词的第四个和第五个字母。
但是这样的表达式看起来怎么样?
任何帮助将不胜感激。
我能做的最好的事情就是以下,我尝试了消极的前瞻
^...(?!F0).*|^...(?!P0).*|^...(?!D0).*
但这总是会导致 true,因为这些是 OR,我需要对它们进行 AND 操作。
示例数据:
- EDMF01 - 不应选择
- EDMF02 - 不应选择
- EDMF03 - 不应选择
- EDMP01 - 不应选择
- EDMP02 - 不应选择
- EDMD01 - 不应选择
- EDMMIS - 应选择
- FXMMIS - 应选择
- JSEDTP - 应选择
- 应选择不包含“F0”、“P0”或“D0”的任何单词
最佳答案
您需要使用一个
^...(?![FPD]0).*
甚至
^.{3}(?![FPD]0)
请参阅regex demo
详细信息
^
- 输入开始...
/.{3}
- 除换行符之外的任意 3 个字符(?![FPD]0)
- 后面没有F
或P
或D
后跟0
允许紧邻当前位置的右侧.*
- 除换行符之外的任何 0+ 个字符,尽可能多(如果您在Regex.IsMatch
中使用.* 中的模式
不是必需的,因为该方法允许部分字符串匹配)。
关于c# - 正则表达式: Getting everything except certain matching strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49445974/