【发布时间】:2019-12-25 14:32:21
【问题描述】:
我有一个问题,我一直坚持..
我有一个名为 xml_data.txt 的文件和另一个名为 entry.txt 的文件
我想替换<core:topics> and </core:topics>之间的所有内容
我写了下面的脚本
$test = Get-Content -Path ./xml_data.txt
$newtest = Get-Content -Path ./entry.txt
$pattern = "<core:topics>(.*?)</core:topics>"
$result0 = [regex]::match($test, $pattern).Groups[1].Value
$result1 = [regex]::match($newtest, $pattern).Groups[1].Value
$test -replace $result0, $result1
当我运行它输出到控制台的脚本时,它看起来并没有做出任何改变。
谁能帮帮我
注意:拼写错误已修复
【问题讨论】:
-
使用
$test = Get-Content -Path ./xml_data.txt -Raw和$pattern = "(?s)<core:topics>(.*?)</core:topics>" -
DO NOT parse XML with regex。要操作 XML 数据,请使用 PowerShell 的内置 XML 解析器。请注意,您的数据显然正在使用 namespaces,因此您需要注意这一点。
-
$test -replace [regex]::Escape($result0), $result1 -
@WiktorStribiżew 如果我有多个条目,我将如何循环该条目
-
对不起,我认为您的问题相当不明确,有点过于宽泛。
标签: regex powershell replace file-get-contents