首页 > 解决方案 > Powershell 正则表达式复杂模式 (XML)

问题描述

我在 XML 中有一个字符串,我试图将其返回为一个变量(如下)。

<XMLElement><![CDATA[TEXT - I - FIND - INTERESTING]]></XMLElement>

我的问题是我对正则表达式一无所知,而且我发现很难理解如何将我的特殊字符转换为不被解释为正则表达式字符的“字符串”。

方括号之间的文本可以是任意长度和任意字符;这就是我想保存到我的变量中的内容,例如“TEXT - I - FIND - INTERESTING”。

我也想知道这是否实际上是解决这个问题的最佳方法。

任何支持将不胜感激。

标签: regexxmlpowershellselect-string

解决方案


不要对 XML 使用正则表达式!

在 PowerShell 中使用 XML 的优点是我们可以使用 XPath 搜索和导航文档。在您的情况下,我将使用text()选择器来解析 CDATA 部分的内部值:

$xml = [xml]@'
<root>
    <XMLElement><![CDATA[TEXT - I - FIND - INTERESTING]]></XMLElement>
</root>
'@

$interestingString = $xml.SelectSingleNode('//XMLElement/text()').Value

//XMLElement意思是“到处<XMLElement> 寻找


推荐阅读