我想在文件中查找包含两个单词的行 word_1
和 word_2
按顺序排列,例如在 Line A
下面,但不像 Line B
或 Line 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
s,而正则表达式 a+
将匹配至少一个 a
.表示“匹配任何内容”的正则表达式元字符是
.
, 所以 .*
表示“匹配任何内容,任意次数。有关该主题的简要介绍,请参阅 perlrequick。
关于regex - 确认正则表达式 : Matching two words in order in the same line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5607774/