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

正则表达式 – Perl可以一次性用自己的替代词替换多个关键词吗?

发布时间:2020-12-14 06:27:12 所属栏目:百科 来源:网络整理
导读:考虑一个包含以下内容的文本文件: apple apple pear plum apple cherry pear apple cherry plum plum pear apple cherry pear pear apple plum 并考虑perl one-liner: perl -pe "s/apple/green/g and s/pear/yellow/g and s/plum/blue/g and s/cherry/red/
考虑一个包含以下内容的文本文件:
apple apple pear plum apple cherry pear apple  
cherry plum plum pear apple cherry pear pear apple plum

并考虑perl one-liner:

perl -pe "s/apple/green/g and s/pear/yellow/g and s/plum/blue/g and s/cherry/red/g" < fruits.txt

这取代了每种水果的颜色.
现在,这可以用一个s /// g以某种方式完成,而不是上面的四个吗?

我也关注水果词的顺序.
如果我的样本不包含“apple”,则其他替换都不会完成.
我该如何解决这个问题?

请注意:我希望将解决方案保持为单行.
因此,定义哈希,读取文件以及需要多行perl代码的其他解决方案并不能让我前进.

这更像是一种好奇心,而不是一个项目所依赖的生死攸关的问题.
现在困扰我好几天了,并且认为一个更有经验的perl用户可以在心跳中帮助解决这个问题,或者直接告诉我这不能按照我想要的方式完成.

perl -E 'my %h = qw(apple green foo bar); say "apple foo" =~ s/(apple|foo)/$h{$1}/rge;'

(编辑:李大同)

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

    推荐文章
      热点阅读