如何使用ack
搜索文件以查找包含 ALL (也没有定义的模式)的行?
ANY(OR)很容易,例如:
ack 'pattern1|pattern2|pattern3'
但是如何编写 AND(ALL)?例如如何编写以下内容:
if( $line =~ /pattern1/ && $line =~ /pattern2/ && $line =~ /pattern3/ ) {
say $line
}
使用
ack
吗?或者更确切地说,可以使用
logical and
创建一个正则表达式吗? 最佳答案
/foo/s && /bar/s && /baz/s
可以写成
/^(?=.*?foo)(?=.*?bar)(?=.*?baz)/s
实际上,我们不需要最后一个。
/^(?=.*?foo)(?=.*?bar).*?baz/s
而且由于我们不关心模式中的哪个实例是否匹配(如果存在多个),我们可以将其简化为
/^(?=.*foo)(?=.*bar).*baz/s
关于regex - ack-搜索多种模式(逻辑与),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36266965/