Powershell替换两个标签之间的正则表达式

时间:2014-06-19 05:13:53

标签: regex powershell

给定由特定标签包含的任意文本块,我想用其他东西替换整个块(在示例中,“BANANA”)

$newvar = $oldvar -replace "<!-- URL -->(*.)<!-- END -->","BANANA"

PS正则表达式中是否存在不需要转义的模式,然后语法可以像这样简单来实现替换吗?

更新:我现在明白它应该是.*,而不是*.,但仍然没有骰子。该匹配包含多行,如果这增加了正则表达式的复杂性或需要其他选项。

1 个答案:

答案 0 :(得分:3)

在我看来,你有.*反向(*.)。除此之外,试试:

$newvar = $oldvar -creplace '(?s)<!-- URL -->.*?<!-- END -->', 'BANANA'
  • 在回复您的评论时,我已将.*?懒惰,因此不会“超匹配”(有关懒惰与贪婪的详细信息,请参阅参考部分)
  • 另外,在提及您的评论时,(?s)会激活DOTALL模式,允许.*?匹配多行。

<强>参考

The Many Degrees of Regex Greed