regex - 确认正则表达式 : Matching two words in order in the same line

标签 regex ack

我想在文件中查找包含两个单词的行 word_1word_2按顺序排列,例如在 Line A下面,但不像 Line BLine 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/

相关文章:

regex - 通过正则表达式拆分输入字符串

java - 如何从 Android/Java 中的字符串中获取多个子字符串?

查找正则表达式匹配的 Pythonic 方法

grep - 如何使 ack 包含 .conf 文件?

regex - 替换字符串中的表情符号会导致奇数字符

java - 属性文件中的正则表达式为 False

linux - ack.pl 工具和 ack.pl 标志 + 如何忽略文件类型

在所有目录中搜索

windows - 如何在 Windows 的 powershell 中使用 ack 在文件中搜索 '<'?

regex - ack - 搜索多个模式(逻辑与)