1

過去 2 時間、これらの問題を解決しようとしてきましたが、解決策が見つからないようです。

ファイルからリンクを抽出する必要がありHTMLます。100 以上のリンクがありますが、そのうちの 25 のみが有効です。

有効なリンクは内部に配置されています

<td><a href=" (link) ">

最初に、逐語的な文字列内の二重引用符に問題がありました (そしてまだあります)。したがって、逐語的に「通常の」文字列に置き換えたので、 \" を " に使用できますが、問題は、Regex私が書いたこれが機能しないことです

Match LinksTemp = Regex.Match(
                              htmlCode,
                              "<td><a href=\"(.*)\">",
                              RegexOptions.IgnoreCase);

"<td><a href="http://www.google.com">代わりに出力として取得するのでhttp://www.google.com

この問題を解決する方法と、逐語的な文字列内で二重引用符を使用する方法を知っている人は誰でも (例 @" <>"das"sa ")

4

3 に答える 3

2

すべての要素を取りたい場合は、次のように単純にコードを使用します。

string htmlCode = "<td><a href=\" www.aa.pl \"><td> <a href=\" www.cos.com \"><td>";
Regex r = new Regex( "<a href=\"(.*?)\">", RegexOptions.IgnoreCase );
MatchCollection mc = r.Matches(htmlCode);

foreach ( Match m1 in mc ) {                
   MessageBox.Show( m1.Groups[1].ToString() );
}
于 2011-06-10T23:46:56.013 に答える
2

エスケープされた二重引用符のサンプル:@"some""test"
正規表現のサンプル:"<a href=\"(.*?)\">"

    var match = Regex.Match(html, "<td><a href=\"(.*?)\">", 
RegexOptions.Singleline); //spelling error
    var url = match.Groups[1].Value;

また、Regex.Matches(...)代わりに使用することもできますRegex.Match(...)

于 2011-06-10T23:36:17.153 に答える
1

HTML解析でこれを解析してみませんか?優れた高速な HTML 解析です。例:

   string HTML = "<td><a href='http://www.google.com'>";

            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(HTML);
            HtmlNodeCollection a = doc.DocumentNode.SelectNodes("//a[@href]");

            string url = a[0].GetAttributeValue("href", null);

            Console.WriteLine(url);
            Console.ReadLine();

インポートが必要ですusing HtmlAgilityPack;

于 2011-06-11T00:10:20.787 に答える