RegEx へのリンクを開始する前に、XHTML 自己完結型タグを除くオープン タグに一致するように質問全体を読んでください。
何か新しいことを学ぶためだけに HTML パーサーを書きたいのですが (HTML 5 の場合のみ、HTML 5 かどうかをチェックし、そうでない場合はエラーを返します)、どうすればよいかわかりません。それを行う。例を示しましょう。
<!doctype html>
<html>
<head>
<!-- #TITLE -->
<title>Just an example</title>
</head>
<body>
<p class='main'>Simple paragraph with an <a href='/a.html'>anchor</a></p>
</body>
</html>
さて、これを解析する方法を誰かに教えてもらえますか (最終的な形式は問題ではなく、単なる概念です)。いくつかのアイデア (再帰関数の使用、実際のタグを保持する配列への参照の作成など) はありましたが、これらが最良の概念ではなかったと思います。char ごとにチェックしてから、特定の関数を呼び出すか、正規表現を使用する必要がありますか (以下で説明します)。
正規表現を使用するということは、タグ全体に対して 1 つのパターンを意味するわけではありません。むしろ、tagname に 1 つのパターンを使用し (これが true を返す場合は次のパターンをチェックし)、次に attribute を使用し (これが true を返す場合は再度チェックし)、最後にタグの末尾をチェックすることを意味します。
タグを見つけたらどうすればいいですか?タグをチェックするループを実行します (タグが見つかった場合は、何度も呼び出します...)? しかし、私にとっては、関数XがXを呼び出すYを呼び出すと、再帰関数または少なくとも半再帰のように思えます...
最後の質問は、そのための最も効率的で正しい構造は何ですか?