9
なぜ正規表現を使用してHTML / XMLを解析できないのか:素人の言葉による正式な説明
SOでは、(X)HTMLまたはXMLの解析に関する質問なしに、正規表現が要求される日はありません。 このタスクの正規表現の非実行可能性を実証する例や、概念を表す式のコレクションを思い付くのは比較的簡単ですが、SOでは、なぜこれが素人でできないのかについての正式な説明は見つかりませんでした。条項。 このサイトでこれまでに見つけた唯一の正式な説明は、おそらく非常に正確ですが、独学のプログラマにとっては非常に謎めいています。 ここでの欠点は、HTMLがチョムスキータイプ2文法(文脈自由文法)であり、RegExがチョムスキータイプ3文法(正規表現)であることです。 または: 正規表現は正規言語にのみ一致しますが、HTMLは文脈自由言語です。 または: 有限オートマトン(正規表現の基礎となるデータ構造)には、その状態とは別にメモリがありません。ネストが任意に深い場合は、有限オートマトンの概念と衝突する任意に大きいオートマトンが必要です。 または: 通常の言語のパンピング補題は、それができない理由です。 [公平を期すために:上記の説明の大部分はウィキペディアのページにリンクしていますが、これらは回答そのものよりも理解しやすいものではありません]。 だから私の質問は:(X)HTML / XMLを解析するために正規表現を使用できない理由について、上記の正式な説明を素人の言葉で翻訳してくれませんか? 編集:最初の回答を読んだ後、明確にする必要があると思いました:翻訳しようとする概念も簡潔に説明する「翻訳」を探しています:回答の終わりに、読者は大まかなアイデアを持っている必要があります-たとえば-「通常の言語」と「文脈自由文法」の意味...