2016-09-06 3 views
-1

を抽出しますHTMLの:C#Regrexは、私はちょうどからのテキストが欲しいHTML文字列を持つHTMLテキスト

string html = "<span class="MyText" id="1">SomeText blah blah</span<br><span class="MyText" id="2">SomeText blah blah 1</span><br><span class="MyText" id="2">SomeText blah blah2</span>"; 

だから今は<span>タグとSTORの間にあるテキストを抽出したいですそれらをリストまたは配列または行に入れます。

注: 私だけ二つのタグブレークとスパンのタグを持つことになりますカスタムHTMLを解析しています。

Regexを使用してこれを行うにはどうすればよいですか?

+2

HTMLは正規表現で解析できるほどにはレギュラーではありません;) –

+0

私は、カスタムHTMLを解析して、2つのタグしか持たないでしょう。

+0

私のアプリケーションは、サーバーからHTMLテキストを受け取るC#Windowsアプリケーションです。 –

答えて

1

RegexでHTMLを解析するのは面倒でエラーが発生します。かなり有名なStackOverflowポストRegEx match open tags except XHTML self-contained tagsを見てください。

私はそのためのライブラリを使用することをお勧めします。広く使われているのは、Nuget経由で利用できるhttp://html-agility-pack.netのHtml Agility Packです。

EDIT:あなただけの(異なるREGEX文でこの問題を解決できるかどうか私は知らない

var pageDoc = new HtmlDocument(); 
pageDoc.LoadHtml(pageContent); 
var pageText = pageDoc.DocumentNode.InnerText; 
+0

私は2つのタグ

+0

@ハリーボーイのみを持つカスタムHTMLを解析しています。私はポストにサンプルを追加しました。私は、RegEx-Expressionよりもコードが分かりやすく、複雑になる可能性があると思います。 –

0

あなたがこのようなものを使用することができますHTMLの内部テキストを取得するためには、正規表現についてあまり知らない)が、 "> <"が出現するたびに文字列を分割し、それらの部分文字列のそれぞれのテキストを抽出することができます。

http://regexr.com/は、別のステートメントの試行に役立つ場合があります。

編集: '</span>'の後に常に '< br>'はありますか?

+0

いいえ必ずしも「
」とは限りません。受信した複数の回線がある場合にのみ、「
」があります。 –

0

非公開のアプリケーションで実行している場合は注意してください。私が言ったように:

HTMLは、しかし、この単純なHTMLスニペットには1を、以下に解析することができる正規表現

で解析するのに十分な定期的なされていません。

string txt = 
    @"""<span class=""MyText"" id=""1"">SomeText blah blah</span<br><span class=""MyText"" id=""2"">SomeText blah blah 1</span><br><span class=""MyText"" id=""2"">SomeText blah blah2</span>"""; 

var matches = Regex.Matches(txt, "(?<=>)([^<]+)(?=<)"); 
foreach (Match match in matches) 
    Console.WriteLine(match.Value); 

それは得られます。

SomeText blah blah 
SomeText blah blah 1 
SomeText blah blah2 
関連する問題