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
1个或多个字符,而不是制表符[^\t]+
-一个选项卡\t
-除制表符外的1个或多个字符[^\t]+
-行结束$
请参见如果要仅匹配从第二列到行尾不带字符1的行,可以使用以下模式:
^[^\t]*\t[^1]*$
我应该说清楚的。我只想读最后两栏。
Something
是许多列,不显式地读取它们会更容易。那么1
呢?如果最后两列不包含您接受的答案中的正则表达式,则希望获取最后两列。我的。那么你的例子的结果是什么?只有第二行还是第二行和第三行?你使用什么语言/工具?