2

レガシー システムの 1 つで整形式の 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 に答える