繁体   English   中英

Perl 正则表达式匹配但仅替换块

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM