Linux 正则的 不理解

文件:test.txt
内容:

a
aa
aaa

b
bb
bbb

Linux 命令

grep "a*" test.txt

匹配结果:

a
aa
aaa

b
bb
bbb

问题:
匹配出

a
aa
aaa 和空格 我理解

*:匹配前一个字符0次或任意次

b的结果 如何被匹配出来的 ???很不理解

阅读 3.1k
4 个回答

出现了0次a,自然匹配

*是可选的意思,如果有就尽量多地匹配,因此能够匹配aaaaaa等。
但既然是可选的,那就表示如果一个a都没有也可以接受。所以能够筛选出空行、bbbbbb
实际上这句正则永远不会失败,因为它可以匹配任意的行,只是匹配的位置不同。对于aaaaaa等行,它是匹配了一整行的内容;而对于空行、bbbbbb等,它只是匹配了一个“空”字符。

其实还是子串匹配,如果你不希望出现b的内容,应该^a*$

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题