我已获得以下代码:
<tr class="even">
<td>
Title1
</td>
<td>
Name1
</td>
<td>
Email1
</td>
<td>
Postcode1
</td>
我想使用RegEx来输出标签之间的数据,如下所示:
标题1 名1 EMAIL1 Postcode1 标题2 名称2 EMAIL2 Postcode2 ...
答案 0 :(得分:1)
你不应该使用正则表达式来解析html,而是使用HTML解析器。
无论如何,如果你真的想要一个正则表达式,你可以使用这个:
>\s+<|>\s*(.*?)\s*<
<强> Working demo 强>
匹配信息:
MATCH 1
1. [51-57] `Title1`
MATCH 2
1. [109-114] `Name1`
MATCH 3
1. [166-172] `Email1`
MATCH 4
1. [224-233] `Postcode1`
答案 1 :(得分:1)
这应该消除标签之间的所有内容,并输出分隔的剩余空间:
$text =
@'
<tr class="even">
<td>
Title1
</td>
<td>
Name1
</td>
<td>
Email1
</td>
<td>
Postcode1
</td>
'@
$text -split '\s*<.+?>\s*' -match '\S' -as [string]
Title1 Name1 Email1 Postcode1
答案 2 :(得分:0)
Don't use a regex. HTML不是常规语言,因此无法使用正则表达式对其进行正确解析。它大部分时间都会成功,但其他时候会失败。壮观。
使用Internet Explorer COM对象从文件中读取HTML:
$ie = new-object -com "InternetExplorer.Application"
$ie.visible = $false
$ie.navigate("F:\BuildOutput\rt.html")
$document = $ie.Document
# This will return all the tables
$document.getElementsByTagName('table')
# This will return a table with a specific ID
$document.getElementById('employees')