またまた
XPath ネタです。
先日、XPath の字句解析をワンライナーで作ってみた。 - IT戦記で書いた正規表現の XPath 字句解析ですが、よく考えるといろいろおかしかった(不正な文字が無視されたりする)& id:otsune さんからコメントやブクマの突っ込みもありまして、1から正規表現を勉強してから新しく書き直すことにしました。
正規表現の勉強方法
以下の二つの方法で勉強しました。
1.SpiderMonkey の正規表現デバッグオプションを使う
SpiderMonkey をビルドするときに、以下のフラグを付けてビルドします。
$ make -f Makefile.ref "DEFINES=-DREGEXP_DEBUG -DDEBUG"
こうすると正規表現がどういう風に実行されたかを調べることができます。
こんな感じ
$ js js> 'foobar'.match(/o+/); 000001: plus 000004: flat1 'o' == 'f' 000001: plus 000004: flat1 'o' == 'o' * 000006: endchild 000001: repeat 000004: flat1 'o' == 'o' * BT_Push: 0,0 000004: flat1 'o' == 'b' 000007: end oo js>