0

C# アプリでは、すべての HTML の "font" タグを "color" 属性と一致させたいと考えています。

次のテキストがあります。

1<font color="red">2<font color="blue">3</font>4</font>56

そして、次のアイテムを含む MatchCollection が必要です。

[0] <font color="red">234</font>
[1] <font color="blue">3</font>

しかし、このコードを使用すると:

Regex.Matches(result, "<font color=\"(.*)\">(.*)</font>");

私が取得する MatchCollection は次のとおりです。

[0] <font color="red">2<font color="blue">3</font>4</font>

C# を使用して必要な MatchCollection を取得するにはどうすればよいですか?

ありがとう。

4

3 に答える 3

1

「HTML」の正規表現はアンチパターンです。やらないでください。

正しい道を歩むために、 HTML Agility Packで何ができるかを見てみましょう。

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(@"1<font color=""red"">2<font color=""blue"">3</font>4</font>56");
var fontElements = doc.DocumentNode.Descendants("font");
var newNodes = fontElements.Select(fe => {
    var newNode = fe.Clone();
    newNode.InnerHtml = fe.InnerText;
    return newNode;
});
var collection = newNodes.Select(n => n.OuterHtml);

さて、collection次の文字列があります。

<font color="red">234</font> 
<font color="blue">3</font> 

うーん...素敵です。

于 2013-07-18T00:04:26.597 に答える