powershell:基于下一行,以不同颜色导出两个HTML标记之间的字符串

powershell:基于下一行,以不同颜色导出两个HTML标记之间的字符串,html,powershell,Html,Powershell,我有一个很大的HTML文件,下面是一个示例): “软件名称”:“Microsoft.NET Framework 4客户端配置文件(KB2979575v2)的安全更新”, “系统id”:3, 我必须导出和之间的文本,忽略“ ”。如果上述图案的下一行以开头,则该字符串的文本颜色应与其他字符串不同 预期产出: “软件名称”:“Microsoft.NET Framework 4客户端配置文件(KB2979575v2)的安全更新” “系统id”:3(不同颜色) 我还必须将所有结果导出到HT

我有一个很大的HTML文件,下面是一个示例):


“软件名称”:“Microsoft.NET Framework 4客户端配置文件(KB2979575v2)的安全更新”,
“系统id”:3,
我必须导出
之间的文本,忽略“ ”。如果上述图案的下一行以
开头,则该字符串的文本颜色应与其他字符串不同

预期产出:

“软件名称”:“Microsoft.NET Framework 4客户端配置文件(KB2979575v2)的安全更新” “系统id”:3(不同颜色)

我还必须将所有结果导出到HTML文件

以下是我尝试过的(糟糕),但它不起作用

$file=“C:\Users\Administrator\Desktop\test.htm”
$content=gc“C:\Users\Administrator\Desktop\test.htm”
$pattern='sf17b16'
$line=选择字符串$pattern$file | ForEach对象{$\u0.LineNumber}
如果($line-匹配“^”)
{
{
$result=[regex]::匹配($content,'class=“sf17b16”。*?>(.*))
$result |选择{($).Groups[1].Value-replace'',''.Trim().Trim(',')}
}
其他的
{
$result=[regex]::匹配($content,'class=“sf17b16”。*?>(.*))
$result |选择{($).Groups[1].Value-replace'',''.Trim().Trim(',')}
}
}|转换为Html |输出文件C:\Users\Administrator\Desktop\output.Html

注意:与线程相关,

您想要正则表达式解决方案吗?好的,我们可以做正则表达式。这将输出具有2个属性的对象数组。一个是搜索的值,另一个是下一行是否为。如何格式化或输出取决于您,但它会为您提供您想要处理的数据

$Source = @"
<tr valign="top">
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span class="sf17b16"> &nbsp; &nbsp; &nbsp; &nbsp;"software_name": "Security Update for Microsoft .NET Framework 4 Client Profile (KB2979575v2)",</span>&nbsp;</code></td>
<td class="ln"></td><td style="color: #000000; background-color: #c0c0c0; "><code>&nbsp;</code></td>
</tr>

<tr valign="top">
<td class="ln"></td><td style="color: #000000; background-color: #c0c0c0; "><code>&nbsp;</code></td>
<td class="ln"></td><td style="color: #000000; background-color: #efcb05; "><code><span class="sf17b16"> &nbsp; &nbsp; &nbsp; &nbsp;"system_id": 3,</span>&nbsp;</code></td>
</tr>
"@
$Data = ([regex]"class=`"sf17b16`".*?>(?: &nbsp;)*(.*?),<\/span>.*?`r`n(?:<td|<\/tr>)").matches($source)|%{[PSCustomObject]@{'Value' = $_.groups[1].value;'NextRowIsTR'=$_.value -match '<\/tr>$'}}
$Data
你想对一个文件运行它吗?只要改变来源。。。只要通过将字符串数组合并到一个多行字符串中,确保搜索正则表达式匹配的字符串都是一个字符串

$Source = Get-Content "C:\Users\Administrator\Desktop\test.htm" -join "`r`n"

你的PowerShell版本是什么。较新的版本可以在不使用正则表达式的情况下正确地解析它。