正则表达式 – Perl中的Lookaround断言
发布时间:2020-12-14 06:01:55 所属栏目:百科 来源:网络整理
导读:我混淆了perl中这些外观断言的用途是什么? 这个例子: (?=pattern) 或积极的向前看.所以这是我的问题: 这些有用吗?他们使用了什么样的实例? 与问题1相关,为什么我要展望正则表达式?不是更多的工作?展望未来然后再次执行模式匹配. 如果可能,我需要一个
我混淆了perl中这些外观断言的用途是什么?
这个例子: (?=pattern) 或积极的向前看.所以这是我的问题: >这些有用吗?他们使用了什么样的实例? 如果可能,我需要一个非常明确的例子.谢谢 解决方法
要大写逗号之间的内容,您可以使用:
(my $x = 'a,b,c,d,e') =~ s/(?<=,)([^,]*)(?=,)/ uc($1) /eg; # a,B,C,D,e a,e Pass 1 matches - Pass 2 matches - Pass 3 matches - 如果你没有使用外观,这就是你得到的, (my $x = 'a,e') =~ s/,([^,]*),/ ','.uc($1).',' /eg; # a,e Pass 1 matches --- Pass 2 matches --- 前瞻不仅避免重复,没有它也行不通! 另一个常见的用途是作为等同于[^ CHAR]的字符串的一部分. foo(?:(?!foo|bar).)*bar # foo..bar,with no nested foo or bar 您可以使用它来缩小字符类. w(?<!d) # A word char that's not a digit. 虽然现在可以使用(?[…])来完成. 它在更深奥的模式中也很有用. /a/ && /b/ && /c/ 可写成 /^(?=.*?a)(?=.*?b).*?c/s (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |