このmatch
キーワードは OCaml パターンで機能します。正規表現は OCaml のパターンではなく、別の種類のパターンなので、使用しないmatch
でください。
関数と同じStr
モジュールにregexp
は、一致する関数があります。
行うべき正規表現マッチングがたくさんある場合は、 を使用できますocamllex
。これは、(残念ながら無効な) の定義と同様の定義のファイルを読み取り、idregex
OCaml コードを生成してマッチングを行います。
Str
これは、モジュールを使用してパターンの単純な一致を行う方法を示すセッションです。
$ ocaml
OCaml version 4.01.0
# #load "str.cma";;
# let idregex = Str.regexp "[a-zA-Z]+[a-zA-Z0-9_]*";;
val idregex : Str.regexp = <abstr>
# Str.string_match idregex "a_32" 0;;
- : bool = true
# Str.string_match idregex "32" 0;;
- : bool = false
余談ですが、あなたのコードは実際には OCaml のようには見えません。OCaml と ocamllex を混ぜたようなものです。実際にはmicmatchと呼ばれる、これに少し似たシステムがあります。ストック OCaml 言語を使用することを計画しているようですが (これには拍手を送ります)、ある時点で micmatch を調べるのは興味深いかもしれません。