【问题标题】:Regex negative on string正则表达式否定字符串
【发布时间】:2012-11-08 16:08:14
【问题描述】:

我怎样才能得到这个正则表达式的否定结果?

8000[0-9]{12}|4000[0-9]{12}|2000[0-9]{11}

我只是想修改正则表达式以获得否定。

此示例的示例:

200045646587982  
8000046678465132  
8000078526654112  
4000846464256741  
4000875465123111  
8318548479844423  
8020489065458054  

如果我执行当前的正则表达式,我会得到结果:

200045646587982  
8000046678465132  
8000078526654112  
4000846464256741  
4000875465123111  

我希望正则表达式返回相反的结果:

8318548479844423  
8020489065458054  

【问题讨论】:

  • 负数是指逆数吗?
  • 所以你想匹配,当这个模式不匹配的时候?

标签: .net regex regex-negation


【解决方案1】:

这取决于您可以使用哪些工具。

我会接受我的输入并使用“正”正则表达式将匹配的行替换为空字符串,然后删除它们。

例如,如果您的输入是一个文件并且您在 Unix 环境中工作:

猫输入.txt | sed s/my-positive-regexp//g

会将匹配的字符串替换为空字符串。

【讨论】:

    【解决方案2】:

    在这里查看我的答案:https://stackoverflow.com/a/12139118/1548853

    即使答案并不完全针对您,同样的原则也适用。

    【讨论】:

      【解决方案3】:

      我认为这比反转/否定模式更简单。

          if (!Regex.IsMatch("input", "pattern")) 
          {
          }
      

      【讨论】:

      • 我知道如何在 c# 中做到这一点,这很容易,但我需要修改正则表达式以获得与当前结果相反的结果。
      • 不,您“不需要”。您可以逐行读取数据。
      猜你喜欢
      • 2012-11-04
      • 2014-04-19
      • 1970-01-01
      • 2010-11-12
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多