Regex 正则表达式匹配非';没有具体数字吗?

Regex 正则表达式匹配非';没有具体数字吗?,regex,Regex,我有一个选项卡分隔的文件,如下所示: Something 1 Text... Something 2 Text... Something 2001 Text... Something 1 Text 我想匹配在倒数第二列中没有1的所有行。所以我试了一下: \t[^1][^\t]*\t[^\t]*$ 但由于某些原因,这不起作用。有什么提示吗 谢谢 您可以使用此正则表达式: /^\S+\s+(?!.*1).*$/gm ^.*(?!.*1)[^\t]+\t

我有一个选项卡分隔的文件,如下所示:

Something    1    Text...
Something    2    Text...
Something    2001 Text...
Something    1    Text
我想匹配在倒数第二列中没有1的所有行。所以我试了一下:

\t[^1][^\t]*\t[^\t]*$
但由于某些原因,这不起作用。有什么提示吗


谢谢

您可以使用此正则表达式:

/^\S+\s+(?!.*1).*$/gm
^.*(?!.*1)[^\t]+\t[^\t]+$

或者,如果希望
1
成为一个完整的单词,请使用:

/^\S+\s+(?!.*\b1\b).*$/gm


编辑:

/\t(?!.*1)\S+\t+\S+$/gm
仅检查最后两列中是否存在
1

/\t(?!.*1)\S+\t+\S+$/gm

您可以使用以下正则表达式:

/^[^\t]*\t((?!1).)*$/gm


(?!1)
是一种负向前瞻,它匹配任何不后跟1的字符您的正则表达式[^1][^\t]*\t[^\t]*$不起作用,因为它匹配一个制表符,然后是除
1
以外的任何字符,1次,然后是除制表符、制表符以外的0个或更多字符,和0个或更多字符,而不是行尾前的制表符(如果您使用的是
m
模式)

我建议阅读第一列中的所有内容,然后是一个选项卡,然后设置一个复选框,这样我们就不会有“1”:

注意多行
m
标志

这是

编辑:

/\t(?!.*1)\S+\t+\S+$/gm
如果只需要确保最后两列中没有
1
,请使用以下正则表达式:

/^\S+\s+(?!.*1).*$/gm
^.*(?!.*1)[^\t]+\t[^\t]+$
消除:

  • ^
    -行首
  • *
    -从一开始就使用任何字符
  • (?!*1)
    -设置检查
    1
    -它不应出现在此处的行尾之前
  • [^\t]+
    1个或多个字符,而不是制表符
  • \t
    -一个选项卡
  • [^\t]+
    -除制表符外的1个或多个字符
  • $
    -行结束

请参见

如果要仅匹配从第二列到行尾不带字符1的行,可以使用以下模式:

^[^\t]*\t[^1]*$

我应该说清楚的。我只想读最后两栏。
Something
是许多列,不显式地读取它们会更容易。那么
1
呢?如果最后两列不包含您接受的答案中的正则表达式,则希望获取最后两列。我的。那么你的例子的结果是什么?只有第二行还是第二行和第三行?你使用什么语言/工具?