我想在文件中找到包含word_1和word_2两个单词的行,如下面的A行,但不是在B行或C行:
Line A: ... word_1 .... word_2 .... Line B: ... word_1 .... Line C: ... word_2 ....
我努力了
$ack '*word_1*word_2' $ack '(word_1)+*(word_2)+'
并且在正则表达式的开头附带了^附加的相同命令(试图遵循Perl正则表达式语法).
这些命令都不返回我感兴趣的文件或行.
我究竟做错了什么?
谢谢!
你想找到word_1,其次是任何次数,后跟word_2.应该是
word_1.*word_2
你似乎正在使用*,因为它通常用于命令行搜索,但在正则表达式中它是前一个字符的量词,意思是匹配至少0次.例如,正则表达式a *将匹配0或更多,而正则表达式a将匹配至少一个a.
正则表达式意思是“匹配任何东西”,所以*表示“匹配任何东西,任何次数”,请参见perlrequick简要介绍该主题.