Powershell删除字符串内容中的HTML标记

Art*_*ski 4 html regex string powershell

我有一个大的HTML数据字符串分成小块.我正在尝试编写PowerShell脚本来删除所有HTML标记,但我发现很难找到正确的正则表达式模式.

示例字符串:

<p>This is an example</br>of various <span style="color: #445444">html content</span>
Run Code Online (Sandbox Code Playgroud)

我尝试过使用:

$string -replace '\<([^\)]+)\>',''
Run Code Online (Sandbox Code Playgroud)

它适用于简单的示例,但上面的示例捕获整个字符串.

有什么建议是实现这个目标的最佳途径吗?

提前致谢

bri*_*ist 10

对于纯正则表达式,它应该像以下一样简单<[^>]+>:

$string -replace '<[^>]+>',''
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示

请注意,这可能会因某些HTML注释或<pre>标记内容而失败.

相反,您可以使用专为.Net代码设计的HTML Agility Pack,我之前在PowerShell中成功使用过它:

Add-Type -Path 'C:\packages\HtmlAgilityPack.1.4.6\lib\Net40-client\HtmlAgilityPack.dll'

$doc = New-Object HtmlAgilityPack.HtmlDocument
$doc.LoadHtml($string)
$doc.DocumentNode.InnerText
Run Code Online (Sandbox Code Playgroud)

HTML Agility Pack适用于非完美的HTML.