克服HTML文本块中的换行符

时间:2014-06-12 01:55:26

标签: html regex vba

我知道我不应该使用REGEX来解析HTML,我保证会查看HTML敏捷包,但与此同时,有些专家可以告诉我是否有匹配的模式整个街区?

<tr bgcolor="#f4f4ff"><td align="center"><font size="2">42</font></td>
<td align="center"><font size="2">35</font></td>
<td><font size="2"><a href="/movies/?id=bears.htm"><b>Bears</b></a></font></td>
<td><font size="2"><a href="/studio/chart/?view2=calendar&yr=2014&studio=buenavista.htm">BV</a></font></td>
<td align="right"><font size="2"><b>$33,845</b></font></td>
<td align="right"><font size="2"><font color="#ff0000">-60.1%</font></font></td>
<td align="right"><font size="2">75</font></td>
<td align="right"><font size="2"><font color="#ff0000">-35</font></font></td>
<td align="right"><font size="2">$451</font></td>
<td align="right"><font size="2">$17,492,470</font></td>
<td align="right"><font size="2">-</font></td>
<td align="center"><font size="2">8</font></td>
</tr>

我正在使用VBA,而且regexoptions似乎无法使用。我已经无休止地摆弄,并且&#34;应该工作&#34;喜欢

<tr[.\n]+tr> 
<tr[.\s]+tr> 
<tr[.\x0C\x\0A]+tr>

别&#39;吨。我可以匹配到第一个休息时间的所有东西,然后我打了一堵砖墙。如果单线选项不可用,是否有任何解决方法?在尝试匹配之前,可能使用VBA REPLACE函数将所有vbcrlf实例更改为其他字符?有人可以向我指出一个例子,说明HTML敏捷包会有多容易吗?

1 个答案:

答案 0 :(得分:0)

好的,你听说过使用正则表达式解析html的警告吗?

据我所知,VBAScript没有DOTALL模式,所以为了匹配不同的行,我们必须制作一个虚假的DOTALL点,如下所示:(?:.|[\r\n])[\s\S]

此正则表达式将匹配您的块:

<tr[\s\S]*?</tr>

但如果有嵌套行,那么你会对使用正则表达式感到遗憾。 :)

示例代码

Dim myRegExp, myMatches, matched_block
Set myRegExp = New RegExp
myRegExp.Pattern = "<tr[\s\S]*?</tr>"
Set myMatches = myRegExp.Execute(SubjectString)
If myMatches.Count >= 1 Then
    matched_block = myMatches(0).Value
Else
    matched_block = ""
End If