我有一个标签分隔的文件,如下所示:
Something 1 Text...
Something 2 Text...
Something 2001 Text...
Something 1 Text
我希望匹配倒数第二列中没有1的所有行。所以我尝试了这个:
\t[^1][^\t]*\t[^\t]*$
但由于某种原因,这不起作用。任何提示?
谢谢!
答案 0 :(得分:3)
您可以使用此正则表达式:
/^\S+\s+(?!.*1).*$/gm
或者,如果您希望1
成为完整的单词,请使用:
/^\S+\s+(?!.*\b1\b).*$/gm
修改强>
仅检查最后2列中1
的存在情况:
/\t(?!.*1)\S+\t+\S+$/gm
答案 1 :(得分:1)
您的正则表达式\t[^1][^\t]*\t[^\t]*$
不起作用,因为它与标签匹配,然后除1
以外的任何字符,1次,然后是除标签以外的0或更多字符,a选项卡,以及行尾之前的标签以外的0个或更多字符(如果您使用的是m
模式)。
我建议先读取第一列中的所有内容,然后选择一个标签,然后设置一个检查,以便我们没有“1”:
^[^\t]*\t(?!.*1).*$
注意多行m
标志。
这是my demo
修改强>
如果您只需要确保最后2列中没有1
,请使用此正则表达式:
^.*(?!.*1)[^\t]+\t[^\t]+$
EXPANATION:
^
- 行首.*
- 从头开始使用任何字符(?!.*1)
- 设置一个1
的支票 - 它不应该出现在行尾之前![^\t]+
标签以外的1个或多个字符\t
- 标签[^\t]+
- 标签以外的1个或多个字符$
- 行尾。请参阅another demo
答案 2 :(得分:0)
答案 3 :(得分:0)
如果您只想匹配第二列中没有字符1的行,直到该行的结尾,您可以使用此模式:
^[^\t]*\t[^1]*$