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