簡體   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