如何找到没有特定数字的多行

时间:2017-08-20 14:12:43

标签: c# regex

我有以下几行:

MyString                 33
MyString                 10
MyString                 3
MyString                 5

我希望在没有特定号码的所有线路上获得匹配:3 因此,我需要对这些数字进行匹配:

MyString                 33
MyString                 10
MyString                 5

MyString                 3

这就是我的尝试:

MyString                 ^(?!3)
MyString                 ^(3)
MyString                 (^?!3)
MyString                 (^3)

但他们都没有工作 我对正则表达式没有多少经验 我用这个网站作为指导:
https://www.cheatography.com/davechild/cheat-sheets/regular-expressions/

我也读过类似的问题:
Exclude certain numbers from range of numbers using Regular expression Exclude a set of specific numbers in a "\d+" regular expression pattern

但我仍然不明白该怎么做。

3 个答案:

答案 0 :(得分:2)

你可以使用正则表达式

MyString                 (?!3\b)\d+

请参阅regex demo

否定前瞻(?!3 \ b)
断言下面的正则表达式与字符3字面上不匹配 \ b在字边界处断言位置

答案 1 :(得分:2)

工作解决方案:

\w+\s+(?!3\b)\d+

\w+      # 1 or more word characters
\s+      # 1 or more white-space characters
(?!3\b)  # looking ahead, this group may not match (\b is a word boundary)
\d+      # 1 or more digits

Demo

答案 2 :(得分:1)

您可以使用表达式:

grep -v '^3$' yourFile

通过这种方式,您要求找到:

  1. 所有字符串以3
  2. 开头(^)
  3. 所有字符串终止($)3
  4. 所有只有一个3的字符串
  5. 由此,您选择了仅包含数字3的所有字符串。使用标记-v反向选择以获得您想要的内容。

    希望它有所帮助。