簡易版 Boost.Xpressive、Boost.Spirit の正規表現対応表

以前、Boost.Xpressive と Boost.Spirit の速度比べをした際にちょっと調べたのでまとめておこう。
この書き方しかないわけではないので、もっと実行効率のいいルールを探すのもいいかもね。
ただ、Boost.Spirit は網羅的なマッチングをしないので要注意*1

正規表現 Xpressive Spirit
a (文字としての 'a') as_xpr('a') char_('a')
li_("a")
abc (文字列としての "abc") as_xpr("abc") li_("abc")
. _ char_
ab a >> b a >> b
a¦b a ¦ b a ¦ b
a* *a *a
a+ +a +a
a? !a -a
a{n,m} repeat(a) repeat(n,m)[a]
[0-9] range('0','9') char_('0','9')
[abc] as_xpr('a') ¦ 'b'¦ 'c'
(set='a','b','c')
char_('a') ¦ 'b' ¦ 'c'
[0-9abc] set[ range('0','9') ¦ 'a' ¦ 'b' ¦ 'c' ]
set[ range('0','9') ¦ (set= 'a','b','c') ]
char_('0', '9') ¦ 'a' ¦ 'b' ¦ 'c'
[^abc] ~(set= 'a','b','c') char_ - (char_('a') ¦ 'b' ¦ 'c')
a(ba)* a >> *(b >> a) a % b
a ¦ b ¦ ab a ¦ b ¦ (a >> b) a ¦¦ b