加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 05:37:43 所属栏目:百科 来源:网络整理
导读:如何使用ack搜索文件以查找包含所有(或任何)已定义模式的行? ANY(OR)很简单,例如: ack 'pattern1|pattern2|pattern3' 但如何写AND(ALL)?例如如何写以下内容: if( $line =~ /pattern1/ $line =~ /pattern2/ $line =~ /pattern3/ ) { say $line} 用ack?
如何使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读