[英]Perl regex to match but only replace in blocks
这是一个愚蠢的问题 - 但我画的是一个空白:我有一个测试字符串:
Foo|||bar||something|whatever
我需要更换||
与|EMPTY_STRING|
对于每个实例。
我正在做:
s/\Q||/|EMPTY_STRING|/g;
问题是,这会将其转换为:
Foo|EMPTY_STRING||bar|EMPTY_STRING|something|whatever
注意 || 在那里。 我一定错过了一些愚蠢的东西。 它是什么?
您可以在正则表达式中使用环视:
s='Foo|||bar||something|whatever'
perl -pe 's/(?<=\|)(?=\|)/EMPTY_STRING/g' <<< "$s"
Foo|EMPTY_STRING|EMPTY_STRING|bar|EMPTY_STRING|something|whatever
正则表达式详细信息:
(?<=\|)
:向后断言我们有|
落后电流 position(?=\|)
:向前断言我们有|
领先于当前 position
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.