html 解析 - 如何删除 <a 和使用 Powershell 之间的文本字符串</a>?



我的任务是创建一个脚本,在我的组织中从打印机中提取墨粉级别,并以.csv格式将其推出,用于excel报告。不幸的是,当我添加打印机标题时,我无法删除:

< a href="h_product=Q7493A&amp;h_lang=en&amp;h_cc=us&amp;h_tool=prodhomes" onclick="target = new Date().valueOf().toString(); if (window.open) window.open('h_product=Q7493A&amp;h_lang=en&amp;h_cc=us&amp;h_tool=prodhomes',target,'resizable=yes,scrollbars=yes,menubar=yes,location=yes,toolbar=yes,status=yes'); return false;" id="lnkOtherLink2">Product Support</a>

< a href="http://h20180.www2.hp.com/apps/Navh_product=CB480A&amp;h_lang=en&amp;h_cc=us&amp;h_page=hpcom&amp;hpagetype=s-001&amp;h_client=s-a-e001-1" onclick="target = new Date().valueOf().toString(); if (window.open) window.open('http://h20180.www2.hp.com/apps/Navh_product=CB480A&amp;h_lang=en&amp;h_cc=us&amp;h_page=hpcom&amp;hpagetype=s-001&amp;h_client=s-a-e001-1',target,'resizable=yes,scrollbars=yes,menubar=yes,location=yes,toolbar=yes,status=yes'); return false;" id="lnkOtherLink2">Product Support</a>

有没有办法使用powershell命令删除"<a"和/a>以及它们之间的数据?(添加空格并<删除空格,以便显示代码。

由于字符的特殊性,简单的替换功能将不起作用,而且删除特定的文本块似乎相当混乱。由于所有有问题的块都以"a"函数开始和结束,我认为必须有一种方法来做到这一点。反过来说,也许有一种方法可以避免这一切。

根据您最近的评论,-replace "<a(.*?)</a>"应该做到这一点。

以下是示例用法:

$tmp = @'
Printer1, <a href="h_product=Q7493A&amp;h_lang=en&amp;h_cc=us&amp;h_tool=prodhomes" onclick="target = new Date().valueOf().toString(); if (window.open) window.open('h_product=Q7493A&amp;h_lang=en&amp;h_cc=us&amp;h_tool=prodhomes',ta‌​rget,'resizable=yes,scrollbars=yes,menubar=yes,location=yes,toolbar=yes,status=ye‌​s'); return false;" id="lnkOtherLink2">Product Support</a> Black Cartridge,91%, Cyan Cartridge,59%, Magenta Cartridge,44%, Yellow Cartridge,24%, Image Transfer Kit,75%, Image Fuser Kit,21%,
'@
$tmp -replace "<a(.*?)</a>", ""

注意regex贪婪限定符(?),如果没有它,您将捕获从第一个<a>标记开始到最后一个标记结束的所有内容,这可能不是您想要的(取决于整页内容)。

话虽如此,我不敢相信HP打印机没有API来以正确的方式检查墨粉水平。

相关内容

最新更新