5

さて、正規表現でHTMLを解析しようとすると、Cthulhuの怒りが生まれることは誰もが知っています。かなりよく。そして、なぜあなたがすべきでないのかについて、いくつかの素晴らしい反応があります。私はこれらを受け入れ、質問にこれらのリンクを複数回投稿しました。

しかし、この質問を次の範囲に入れましょう。HTMLを解析するための正規表現以外のオプションはありません。なんで?それは問題ではありません。 しかし、今のところ、私たちの開発者がトニー・ザ・ポニーに気を失い、不可能なことをするのに最善を尽くしたいと思っていると仮定してください。これが気に障る場合は、その質問が理論的であると想定してください。あなたのボートを浮かぶものは何でも。HTMLを正規表現で解析するという考えを考えてみてください。そうすべきではありませんが。

ここでは、少なくとも完璧では不可能であるという主張が見られます。しかし、その下に@NikiCからの非常に賢明なコメントがあります:

この答えは、間違った引数(「HTMLは正規言語ではないため」)から正しい結論(「正規表現でHTMLを解析するのは悪い考えです」)を導き出します。最近のほとんどの人が「正規表現」(PCRE)と言うとき、文脈自由文法(実際には些細なことです)だけでなく、文脈依存文法も解析できます(https://stackoverflow.com/を参照)。 a / 7434814/1222420

真実は、たとえかなり冗長であっても、現代の正規表現でいくつかの信じられないほど強力なことを行うことができるということです。しかし、多くの人がこの問題を停止性問題のように聞こえます。試すことはできますが、解決策が失敗する別のケースが常にあります。

それで、ここに質問があります、そしてそれは少し2つのパートです。

  • HTMLを解析するための完全な正規表現を生成することは可能ですか?
    • もしそうなら、証明は建設的ですか?私たちは自分たちができることだけを知っていますか、それともそれは行われていますか?
  • それが不可能な場合、そこにある最も正確なものは何ですか?
4

1 に答える 1

18
于 2012-08-22T00:38:58.900 に答える