私のプロジェクトでは、HTML ドキュメントからリンクを抽出する必要があります。この目的のために、主に次の作業に基づいて、ragel HTML 文法を用意しました: https://github.com/brianpane/jitify-core/blob/master/src/core/jitify_html_lexer.rl (ここで言及: http:// ragel-users.complang.narkive.com/qhjr33zj/ragel-grammars-for-html-css-and-javascript )
現在のところ克服できない1つの問題を除いて、ほとんどすべてがうまく機能します(素晴らしいツールに感謝します!)。
このテキストを入力として指定すると:
bbbb <a href="first_link.aspx"> cccc<a href="/second_link.aspx">
私のパーサーは最初のリンクを正しく抽出できますが、2 番目のリンクは抽出できません。それらの違いは、 と の間にスペースがあるが、 と の間に'bbbb'
スペースが'<a'
ないことです。'cccc'
'<a'
一般に、スペースを除くテキストがタグの前に存在する'<a'
場合、解析はそれをコンテンツと見なし、パーサーはタグの開始を認識しません。
このリポジトリで見つけてください: https://github.com/amdei/ragel_html_sample C プログラム ( ngx_url_html_portion.rl ) として機能することを目的として、意図的に文法を単純化したサンプルです。入力ファイル input-nbsp.html もあります。これには、アプリケーションへの入力が含まれていると予想されます。
それをいじるために、文法から .c-file を作ります:
ragel ngx_url_html_portion.rl
次に、結果の .c ファイルをコンパイルし、programm を実行します。
入力ファイルは同じディレクトリにある必要があります。
どんな手がかりにも心から感謝します。