ocamllexで利用できる正規表現(3.08.4)
http://caml.inria.fr/pub/docs/manual-ocaml/manual026.html
#とasが何気に便利。特にasは多用してる。Lexing.lexemeとか書かなくなって幸せ*1。
- '文字'
- OCamlと同じ文字定数。「文字」に表される1文字にマッチ。
- _
- (アンダースコア。)任意の1文字にマッチ。
- eof
- lexerに与えられた入力の終端にマッチ。
Note: インタラクティブな端末入力からend-of-file以降に文字を入力できるシステムがあります。ocamllexは、そのようなeofの後の入力を仮定する正規表現を正しく処理できません。 - "文字列"
- OCamlと同じ文字列定数。「文字列」に表される文字列にマッチ。
- [ 文字セット ]
- 文字セットに含まれる任意の1文字にマッチ。
文字セットとして有効なのは
1.文字定数 'c'
2.文字の範囲 'c1' - 'c2'
3.連結で表現される文字の輪集合 'c1' 'c2' ... 'cn' - [ ^ 文字セット ]
- 文字セットに含まれない任意の1文字にマッチ。
- 正規表現1 # 正規表現2
- (文字集合の差)
正規表現1と正規表現2は、文字セットでなくてはいけない([...]か文字定数かアンダースコア)。二つの文字セットの差にマッチする。 - regexp *
- 0回以上の繰り返し
- regexp +
- 1回以上の繰り返し
- regexp ?
- オプション
- regexp1 | regexp2
- regexp1かregexp2
- regexp1 regexp2
- 連結
- ( regexp )
- グループ化
- ident
- 識別子。
- regexp as ident
- 正規表現にマッチした文字列をidentに束縛。
*1:Lexing.lexme(eが抜けてる)とよく書いてしまって悔しい思いをしていたので