c# - 間にあるタグテキストを削除するための正規表現と- C#
2 に答える
Regex
HTML 、特に一貫性のないHTMLを解析するには不適切な選択です。
HTMLAgilityPackを使用してHTMLを解析および変更することをお勧めします。
Html Agility Pack(HAP)とは正確には何ですか?
これは、読み取り/書き込みDOMを構築し、プレーンXPATHまたはXSLTをサポートするアジャイルHTMLパーサーです(実際には、XPATHまたはXSLTを理解して使用する必要はありません。心配しないでください...)。これは、「Web外」のHTMLファイルを解析できるようにする.NETコードライブラリです。パーサーは、「現実世界」の不正な形式のHTMLに対して非常に寛容です。オブジェクトモデルは、System.Xmlを提案するものと非常に似ていますが、HTMLドキュメント(またはストリーム)用です。
ソースダウンロードには、ライブラリの使用方法を示す多数のサンプルプロジェクトが付属しています。
正規表現は、HTMLファイルの解析には適していません。
HTMLは厳密ではなく、その形式も規則的ではありません。
htmlagilitypackを使用する
正規表現にはRegexが使用されます
このコードを使用して、を使用して取得できますHtmlAgilityPack
HtmlDocument doc = new HtmlDocument();
doc.Load(yourStream);
foreach(var item in doc.DocumentNode.SelectNodes("//li[a]"))// select li only if it has anchor tag
{
item.ParentNode.RemoveChild(item);//removed anchor tag
}
//dont forget to save
正規表現のみを使用してタグテキストを削除したい..
Regex.Replace(input,@"(?<=<li[^>]*>)\s*<a.*?(?=</li>)","",RegexOptions.Singleline);