例如,我有以下文本(存储为$test):



我想将img src=\"\"之间的粗体文本更新为/sites/newSite/newLibrary/originalFilename.v2.jpg之类的内容

我将如何使用正则表达式在Powershell中进行这些替换?

我已经尝试过$test -replace '(?<=img src=\")(?<imgUrl>\")', ' '来启动,即使那样也不能代替我。

更新

我能够使用$test -replace '(?<=img src=\\")(.+?)(?=\\")', '$1'捕获需要替换的内容(感谢@ user1390638)

我想在替换之前对$1应用一个函数,所以我必须这样做以使其起作用:
[regex]::Replace($test, '(?<=img src=\\")(.+?)(?=\\")', {param($match) someFunction($match.Groups[1].Value) })

最佳答案

您的正则表达式是错误的,要匹配之间的字符串,应使用以下正则表达式。

  • 正则表达式的第一部分(?
  • 正则表达式的第二部分。得到所有之间,?表示非贪婪,因此它将在第一个匹配项
  • 处停止
  • 正则表达式的最后一部分(?=“)表示直到引用为止。
    (?<=img src=\\").+?(?=")
    假设您的文本已分配给$ text变量。
    $text -replace('(?<=img src=\\").+?(?=")',"/sites/newSite/newLibrary/originalFilename.v2.jpg")
    

    要替换多个文本,基本上可以调用两次-replace,例如$ text -replace(...)-replace(...)

  • 09-25 17:26
    查看更多