大佬教程收集整理的这篇文章主要介绍了在Perl中的一个正则表达式中存在两个字符串时替换字符串,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
$cat pre stuff MACRO1 stuff MACRO2 stuff MACRO2 stuff MACRO1 stuff MACRO2 stuff
如果MACRO1也存在,我想替换MACRO2(与MACRO3).像这样:
$perl -ne '/(?=.*MACRO1).*MACRO2/ ? print s/MACRO2/MACRO3/gr : print' pre stuff MACRO1 stuff MACRO3 stuff MACRO3 stuff MACRO1 stuff MACRO2 stuff
(我想这个表达式的.* MACRO2部分是不必要的,现在我考虑一下)
编辑.到目前为止,基于反馈的上述不太愚蠢的版本:
$perl -ne '/MACRO1/ ? print s/MACRO2/MACRO3/gr : print' pre
我想弄清楚的是如何只使用正则表达式来做到这一点.这是一次尝试:
$perl -ne 'print s/(?=.*MACRO1)(?=.*MACRO2)MACRO2/MACRO3/gr' pre stuff MACRO1 stuff MACRO2 stuff MACRO3 stuff MACRO1 stuff MACRO2 stuff
我认为我对前瞻运算符如何同时成为“锚”和“非消费”都有一些根本的困惑.如果我考虑?=作为一个锚点,我认为上述方法不起作用.但这似乎与“非消费”相矛盾.
任何人都可以定义非消费的含义,并向我展示一个可以产生预期结果的正则表达式吗?
以上是大佬教程为你收集整理的在Perl中的一个正则表达式中存在两个字符串时替换字符串全部内容,希望文章能够帮你解决在Perl中的一个正则表达式中存在两个字符串时替换字符串所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。