私は関連する質問をいくつか見てきましたが、試しましたが動作しません。 divのコンテンツをid「thumbs」に一致させたいと思います。しかしregex.Successは偽:(divの正規表現抽出コンテンツ
Match regex = Regex.Match(html, @"<div[^>]*id=""thumbs"">(.+?)</div>");
私は関連する質問をいくつか見てきましたが、試しましたが動作しません。 divのコンテンツをid「thumbs」に一致させたいと思います。しかしregex.Successは偽:(divの正規表現抽出コンテンツ
Match regex = Regex.Match(html, @"<div[^>]*id=""thumbs"">(.+?)</div>");
正規表現は
HTMLが厳密ではないもそれはそのフォーマットとの定期的な..ですHTMLファイルを解析するための良い選択ではない..です
使用を返しますhtmlagilitypack
なぜパーサを使うのか?
を考えてみましょうあなたのregex..Thereはあなたのコードを壊す可能性例無限の数
あなたはHtmlAgilityPack
HtmlDocument doc = new HtmlDocument();
doc.Load(yourStream);
var itemList = doc.DocumentNode.SelectNodes("//div[@id='thumbs']")//this xpath selects all div with thubs id
.Select(p => p.InnerText)
.ToList();
//itemList now contain all the div tags content having its id as thumbs
いいえ、私は彼がエスケープする必要はないと思います。彼はパターンの前に@を持っています。私はこれが正しいと思う:
<div[^>]*id="thumbs">(.+?)</div>
のでノーダブル二重引用符
これを試してみてください:
Regex r = new Regex(@"(?<text>(<div\s*?id=(\""|"|&\#34;)"
+ @"thumb(\""|"|&\#34;).*?>)(?>.*?</div>|.*?<div "
+ @"(?>depth)|.*?</div> (?>-depth))*)(?(depth)(?!)).*?</div>",
RegexOptions.Singleline);
トピックオフ一部
けど*にコメントを愛するHTML敏捷性パック – Sayse