如何使用 Powershell 在文件中查找多行模式,例如 XML 节点的内容?
也就是说,如果我正在寻找“绿色”这个词deviceDescription
节点,但 XML 节点文本可能跨越多行,这是行不通的:
dir -r -i *.xml | select-string -Pattern "<deviceDescription>.*green.*</deviceDescription>"
首先,如果是 xml,则提取设备描述字符串,将其视为此类,然后匹配所需的字符串,在本例中为绿色。
$x = [xml] (gc .\test.xml)
$x.deviceDescription -match "green"
如果你不想走那条路,你将不得不使用?s
- 单行或 dotall 标志,使 * 匹配换行符:
$x = [IO.File]::ReadAllText("C:\test.xml")
$x -match "(?s)<deviceDescription>.*green.*</deviceDescription>"
请注意,您可能想要使用.*?
或者这可能跨越多个 deviceDescription 标签。像这样的边缘情况是您应该避免使用正则表达式来处理此类事情的原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)