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

标签 regex powershell

给定一块由特定标签包围的任意文本,我想用其他东西替换整个块(在示例中为“BANANA”)
$newvar = $oldvar -replace "<!-- URL -->(*.)<!-- END -->","BANANA"
PS regex中是否存在不需要转义的模式,然后语法可以像这样简单以实现替换吗?

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

最佳答案

在我看来,您的反向.*(*.)。除此之外,请尝试:

$newvar = $oldvar -creplace '(?s)<!-- URL -->.*?<!-- END -->', 'BANANA'
  • 为回应您的评论,我将.*?设置为惰性,因此它不会“过度匹配”(有关“惰性”与“贪婪”的详细信息,请参见引用部分)
  • 还要引用您的注释,(?s)会激活DOTALL模式,从而允许.*?在多行中匹配。

  • 引用

    The Many Degrees of Regex Greed

    关于regex - Powershell替换两个标签之间的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24299201/

    相关文章:

    xml - 如何使用 PowerShell 将复杂元素添加到 XML 文件?

    regex - 表格中的 HIVE 正则表达式记录定界符空值

    regex - Perl正则表达式提取两个连续的单词

    javascript - 我不明白为什么我的 nodejs/javascript 正则表达式不工作

    git - 如何添加像 POSH Git 这样的 powershell 自动完成功能

    c# - 将剪贴板中的文本发送到记事本等应用程序(C# 或 Powershell)

    powershell - 获取所有字段管理为空白的广告组

    javascript结合多个正则表达式

    javascript - 使用php从字符串中删除带有类名的div

    powershell - X509Store构造函数(字符串)的意义是什么?