我想在某個匹配之前或之後的特定模式不匹配的基礎上,在perl上執行全局替換。基本上,我有一個xml標籤,並希望在標籤之前或之後的十個字符內發生匹配時保留它,但如果不是,則刪除xml標籤。Perl全局替換展望未來?
所以,如果我有一個字符串,其中包含:
foo something<xml tag>bar<\xml tag> something
,也不會發生替代,但如果字符串是
something <xml tag>bar<\xml tag> something
它會被替換成:
something bar something
我試過的是:
$string =~ s/(?<!foo.{0,10})<xml tag>(bar)<\/xml tag> |<xml tag>(bar)<\/xml tag>(?!.{0,10}foo)/$1/g;
但我得到這個錯誤:
Variable length lookbehind not implemented in regex
我真的不知道如何做到這一點。幫幫我?
在正則表達式查找屁股必須被固定長度:http://stackoverflow.com/questions/3796436/whats-該技術的原因的換回顧後斷言,必須待確定的長度在-R – Martyn