私はliタグの内容を抽出しようとすると、次のコードがあります。C#で複数行の正規表現に問題がありますが、これをどのように修正できますか?
string blah = @"<ul>
<li>foo</li>
<li>bar</li>
<li>oof</li>
</ul>";
string liRegexString = @"(?:.)*?<li>(.*?)<\/li>(?:.?)*";
Regex liRegex = new Regex(liRegexString, RegexOptions.Multiline);
Match liMatches = liRegex.Match(blah);
if (liMatches.Success)
{
foreach (var group in liMatches.Groups)
{
Console.WriteLine(group);
}
}
Console.ReadLine();
正規表現は、はるかに簡単かつ複数行のオプションなしで始めたが、私はそれが動作するようにしようとし、それを微調整してきました。私が欲しい
はfoo
、bar
とoof
結果ではなく、私は<li>foo</li>
とfoo
を取得します。 Regex101で正常に動作するようです。この私の上に
、https://regex101.com/r/jY6rnz/1
任意の考え?
あなたが正規表現でHTMLを解析しようとするべきではありません。 htmlは正規ではなく、regex(正規表現)はhtmlでうまく動作しません。標準のhtml解析メソッドを使用します。 – jdweng
https://stackoverflow.com/a/1732454/7931009 –