私は他人に非常に頻繁に言われるように言われました。HTML、XMLなどの言語で書かれた文書を解析(または解析)するために正規表現を使用しないでください。 。HTML/XML文書の解析はどのように機能しますか?
代わりに何をするべきか尋ねられたら、通常は、PHP拡張やJSフレームワークなどのドキュメントを解析するためにライブラリを参照します。ほとんどの場合、ドキュメントオブジェクトモデルに依存しているようです。
私の質問は、プログラムやスクリプトでこれを行う方法ではありません。現実の状況では、別の時間にホイールを発明しようとせず、使用可能なフレームワークの1つを使用します。
私が知りたいことは - これらのフレームワークはどうしていますか?または、私はそれをどのようにしてなしでフレームワーク(仮説的に)ですか?私は特定の言語について話しているわけではありません。文書から情報を抽出する理論に興味があります。
[パーサージェネレータ](http://en.wikipedia.org/wiki/Parser_generator)で読むことができます。一般的に、あなたは一度に1つの文字列の文字を見て、どのようなものを探しているかを把握しています。 "' '< - 'を見ると、私がコメントを解析しているモードに入り、 '<'を見ると、私が要素を解析しているモデルに入ります。だから、あなたはXMLのために[パーサージェネレータと文法を使用する](http://stackoverflow.com/questions/570144/best-practices-for-writing-a-parser)か、あなた自身のステートフルパーサーを書くことができます地面を上に。 – Phrogz
これは、正規表現エンジンと同様のテキスト解析です。予想されるコード構造にのみ特化し、パフォーマンスの柔軟性を交換します。 – Armatus
同様、はい。確かに、いくつかの言語では、正規表現を使って文字を叩くパーサーを作るのは簡単です(http://www.ruby-doc.org/stdlib-1.9.3/libdoc/strscan/rdoc/StringScanner.html)。違いは、単一の正規表現は状態を非常にうまく説明できないことです(例えば、 '/ +> /' inside '<! - - >')です。 –
Phrogz