鑑於特定標誌包圍任意的文本塊之間的正則表達式,我想換成別的東西全塊(在本例中,「香蕉」)PowerShell的更換兩個標籤
$newvar = $oldvar -replace "<!-- URL -->(*.)<!-- END -->","BANANA"
是在PS正則表達式中有一個模式不需要轉義,並且語法可以如此簡單以實現替換?
更新:我現在明白它應該是.*
,而不是*.
,但仍然沒有骰子。該匹配涵蓋多行,如果這增加了正則表達式的複雜性或需要其他選項。
鑑於特定標誌包圍任意的文本塊之間的正則表達式,我想換成別的東西全塊(在本例中,「香蕉」)PowerShell的更換兩個標籤
$newvar = $oldvar -replace "<!-- URL -->(*.)<!-- END -->","BANANA"
是在PS正則表達式中有一個模式不需要轉義,並且語法可以如此簡單以實現替換?
更新:我現在明白它應該是.*
,而不是*.
,但仍然沒有骰子。該匹配涵蓋多行,如果這增加了正則表達式的複雜性或需要其他選項。
它在我看來像你有.*
反向(*.
)。除此之外,嘗試:
$newvar = $oldvar -creplace '(?s)<!-- URL -->.*?<!-- END -->', 'BANANA'
.*?
懶惰,所以它不會「強者」(關於懶惰與貪婪的詳細信息,請參閱參考一節)(?s)
激活DOTALL
模式,允許.*?
跨多行匹配。參考
感謝。 ''替換'「,」BANANA「','replace'或'creplace'都替換了最初的標籤,所以至少現在我知道沒有什麼東西需要轉義了。但是,它無法匹配整個內容。我應該補充說,內容跨越多行,也許就是這樣。 '(。*)'似乎沒有工作... –
嘗試新版本。 – zx81
這樣做,merci beaucoup! (給你在T減3分鐘的獎盃;) –
你確定它是'(*)'和'沒有(。*)' – aelor