我要在第五个字符是数字的文件中找到行。也就是数字集{0123456789}。我制作了一个文件:
asdf1
asdf2
..依此类推,直到0。 我做了一些特殊字符和其他符号的案例,以确保我没有抓住这些行。
然而,有一件事引起了我的兴趣。在排队时:
SSSSS3
或
TTTTTS7
也就是说,每个S都是一个空格,而T是一个标签,当第五个字符是空格/制表符而不是数字时,也会检索该行。
有人可以解释为什么会这样吗? 我正在使用的模式是
'....[0-9](.)*'
如果我没弄错,那就是“。”代表任何角色,对吗?如何将超过4个制表符或空格计为小于5'。'?
答案 0 :(得分:3)
你错过了行首锚:
^....[0-9]
如果没有它,egrep
执行正则表达式搜索而不是正则表达式匹配,就像您已输入
.*....[0-9]
虽然区别在于.*
不会导致捕获-o
等标记。
(请注意,最后的(.)*
也是无用的。.*
会隐式附加到RE的末尾,除非您放入行尾锚点$
。)