给定由特定标签包含的任意文本块,我想用其他东西替换整个块(在示例中,“BANANA”)
$newvar = $oldvar -replace "<!-- URL -->(*.)<!-- END -->","BANANA"
PS正则表达式中是否存在不需要转义的模式,然后语法可以像这样简单来实现替换吗?
更新:我现在明白它应该是.*
,而不是*.
,但仍然没有骰子。该匹配包含多行,如果这增加了正则表达式的复杂性或需要其他选项。
答案 0 :(得分:3)
在我看来,你有.*
反向(*.
)。除此之外,试试:
$newvar = $oldvar -creplace '(?s)<!-- URL -->.*?<!-- END -->', 'BANANA'
.*?
懒惰,因此不会“超匹配”(有关懒惰与贪婪的详细信息,请参阅参考部分)(?s)
会激活DOTALL
模式,允许.*?
匹配多行。<强>参考强>