c# - 正则表达式: Getting everything except certain matching strings

标签 c# regex

美好的一天,

我对正则表达式还很陌生,所以请耐心等待。

在我的系统中,我在网格中使用 4 个过滤器。 在其中三个中,它是使用内置功能与某些潜台词进行简单匹配 例如

  1. 过滤器 1:显示包含“F0”的所有内容。
  2. 过滤器 2:显示包含“P0”的所有内容。
  3. 过滤器 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) - 后面没有 FPD 后跟 0 允许紧邻当前位置的右侧
  • .* - 除换行符之外的任何 0+ 个字符,尽可能多(如果您在 Regex.IsMatch 中使用 .* 中的模式 不是必需的,因为该方法允许部分字符串匹配)。

关于c# - 正则表达式: Getting everything except certain matching strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49445974/

相关文章:

php - 需要一个正则表达式来匹配文本中包含/不包含 http ://or www. 或 http ://www. 的 URL

c# - 修改数据库C#中的数据

C# String.getHashCode() 为不同的字符串返回相同的值

c# - 有没有办法为重载运算符调用基方法? C#

c# - Jquery 下拉列表值返回未定义

JavaScript RegExp - 查找特定字符之前的所有前缀

c# - 标识自动增量未应用于列

javascript - 如何将所有出现的已知文本包装在 HTML 文档中?

java - 为什么这些正则表达式在 Java 中执行起来很慢?

python - 在数据帧上使用 python 进行快速文本处理