正则表达式 – 确认 – 搜索多种模式(逻辑AND)

如何使用ack搜索文件以查找包含所有(或任何)已定义模式的行?

ANY(OR)很简单,例如:

ack 'pattern1|pattern2|pattern3'

但如何写AND(ALL)?例如如何写以下内容

if( $line =~ /pattern1/ && $line =~ /pattern2/ && $line =~ /pattern3/ ) {
    say $line
}

用ack?

或者更准确地说,是否有可能创建一个具有逻辑的正则表达式?

解决方法

/foo/s && /bar/s && /baz/s

可写成

/^(?=.*?foo)(?=.*?bar)(?=.*?baz)/s

我们实际上并不需要预测最后一个.

/^(?=.*?foo)(?=.*?bar).*?baz/s

而且,由于我们不关心如果有多个模式的哪个实例匹配,我们可以将其简化为

/^(?=.*foo)(?=.*bar).*baz/s

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...