HTML要素を抜き出す正規表現の自動生成プログラム

HTML要素を抜き出す正規表現を自動生成するプログラム html2regexp を作ったので公開します。

札幌市で賢い借金返済方法を教えます!

使い方は簡単で、HTMLファイル中の抜き出したいHTML要素の先頭タグの末尾にh2rと書き加えるだけです。例えば次のように指定します。

<ul>
   <li><a href="hoge" class="h" h2r>hoge</a></li>
   <li><a href="huga" class="h" h2r>huga</a></li>
</ul>
<div>
   <a href="f">f</a>
</div>

すると、html2regexpは、2つのa要素を抜き出す次の正規表現を生成します。

(<(\w*?)\s*([^>]*?" class="h"[^>]*?)>(.*?)<\/\2>)

HTMLを抜き出して利用したり、Webアプリケーションのテストなどの際に便利だと思います。

動作原理は、次のようになっています。まず、HTML要素の雛形となる正規表現

(<(\w*?)\s*([^>]*?)>(.*?)<\/\2>)

を用意します。そして、抜き出したいHTML要素のタグと属性から、タグと属性として適切な文字列を抽出して、これらの文字列を正規表現に放り込んでいます。このとき、属性として適切な文字列を求めるのに Suffix Tree を使っています。

なお、雛形の正規表現では抽出できないHTML要素は当然抽出できません。その為、適切な正規表現を生成できない場合もありますが、その場合、出来るだけ精度の高い正規表現を抽出します。

デモページもありますので、良かったら試してみてください。

http://llamerada.sakura.ne.jp/html2regexp/demo/demo.cgi

XPathバージョンもそのうち作ります。