[解決済み] 正規表現でXMLやHTMLを解析するのが難しい理由を、いくつか例を挙げて教えてください。[クローズド]です。
2022-03-25 19:06:27
質問内容
私がよく目にする間違いは 以上 と もう一回 は、正規表現でXMLやHTMLを解析しようとしています。 XMLやHTMLの解析が困難な理由をいくつか挙げてみましょう。
ファイルを行の連続として扱いたがる人がいるが、これは有効である。
<tag
attr="5"
/>
タグの先頭を<や<タグとして扱いたがる人がいますが、こんなものが野放しにされているんですね。
<img src="imgtag.gif" alt="<img>" />
開始タグと終了タグをマッチさせたい人はよくいますが、XMLとHTMLではタグが自分自身を含むことができます(従来の正規表現ではまったく扱えません)。
<span id="outer"><span id="inner">foo</span></span>
人々はしばしばドキュメントのコンテンツに対してマッチングを行いたいが(有名な "指定されたページ上のすべての電話番号を見つける"問題など)、データは(見たところ正常であっても)マークアップされている可能性がある。
<span class="phonenum">(<span class="area code">703</span>)
<span class="prefix">348</span>-<span class="linenum">3020</span></span>
コメントには、不適切な書式のタグや不完全なタグが含まれることがあります。
<a href="foo">foo</a>
<!-- FIXME:
<a href="
-->
<a href="bar">bar</a>
その他に、どのようなゴチャゴチャがありますか?
解決方法は?
ここで、楽しい有効なXMLを紹介します。
<!DOCTYPE x [ <!ENTITY y "a]>b"> ]>
<x>
<a b="&y;>" />
<![CDATA[[a>b <a>b <a]]>
<?x <a> <!-- <b> ?> c --> d
</x>
そして、この小さな喜びの塊は、有効なHTMLです。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" [
<!ENTITY % e "href='hello'">
<!ENTITY e "<a %e;>">
]>
<title>x</TITLE>
</head>
<p id = a:b center>
<span / hello </span>
&<br left>
<!---- >t<!---> < -->
&e link </a>
</body>
無効な構文に対するブラウザ固有のパース処理は言うまでもありません。
正規表現に対抗できるよう頑張ってください。
EDIT (Jörg W Mittag): ここにもう一つ、整形式で有効なHTML 4.01の素晴らしい作品があります。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML/
<HEAD/
<TITLE/>/
<P/>
関連
-
[解決済み] HTML IFステートメント
-
[解決済み] input type="button "に背景画像を追加するには?
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] XMLを解析して、特定のノード属性のインスタンスをカウントするには?
-
[解決済み] div内の要素を縦に並べるにはどうしたらいいですか?
-
[解決済み] CSSだけでリンクを無効化する方法
-
[解決済み] localStorage、sessionStorage、session、cookieの違いは何ですか?
-
[解決済み] CSS背景のストレッチとスケール
-
[解決済み] htmlフォームのネストは可能ですか?
-
[解決済み】JSでHTML文字列をパースする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
iframeフレームワークの使用
-
[解決済み] HTMLとCSSによるテーブルスクロール [重複]について
-
[解決済み] HTML 5: Is it <br>, <br/>, or <br />?
-
[解決済み] XHTMLの自己完結型タグを除くオープンタグにマッチするRegEx
-
[解決済み] How can I set the default value for an HTML <select> element?
-
[解決済み] HTMLの "role "属性は何のためにあるのですか?
-
[解決済み] div内の要素を縦に並べるにはどうしたらいいですか?
-
[解決済み] Flexbox:水平方向と垂直方向の中央揃え
-
[解決済み] CSS 背景の不透明度 [重複]について
-
[解決済み] 親ディバイスの高さを指定せずに、子ディバイスの高さを100%にする方法は?