2

我正在我们的一个遗留系统中从格式良好的 HTML 中操作/提取数据。我需要使用正则表达式来解析 HTML,找到某些模式,提取数据,并返回一些修改后的 HTML。我知道正则表达式和 HTML 永远不是答案,但鉴于我确切知道数据来自哪里并且数据结构正确,我相信这将适用于特定情况。

我正在使用的 HTML 具有以下模式:

<i>Name1</i>: Some text goes here<br/>
<i>Name2</i>: Some different text goes here<br/>
<i>Name3</i>: Some other different text goes here<br/>

我需要将 HTML 更改为以下内容:

<i>Name1</i><p>Some text goes here</p>
<i>Name2</i><p>Some different text goes here</p>
<i>Name3</i><p>Some other different text goes here</p>

基本上,我想获取内部文本,将其包装在 ap 标签中,然后删除尾随 br。

我想做如下的事情:

Dim HTML as String = [The HTML goes here]
html = Regex.Replace(html, "</i>:(.+?)<br\s*\/?>", "</i><p>(.+?)</p>", RegexOptions.Multiline)

但它显然不起作用。

在 VB.net 中,如何用新的 HTML 替换所有需要的 HTML 实例?

4

2 回答 2

2

我建议使用HTML Agility Pack来解析和操作 HTML(特别是如果 HTML 的格式不规则)。源代码下载附带了一堆示例项目,因此您可以了解如何使用它。

一般来说,正则表达式不是解析 HTML 的好解决方案

于 2012-11-26T16:44:24.490 回答
1

试一试:

Dim HTML as String = [The HTML goes here]
Dim evaluator As MatchEvaluator = Function(m As Match)
                                  Return "</i><p>" & m.Groups(1).Value & "</p>"
                                  End Function
html = Regex.Replace(html, "</i>:(.+?)<br\s*\/?>", evaluator, RegexOptions.Multiline)
于 2012-11-26T16:44:19.040 回答