我有这个正则表达式有效:
Str.string_match (Str.regexp "[0-9][0-9][0-9][0-9]\\.[0-9][0-9]\\.[0-9][0-9]") dir 0
但我想简化它,它根本不起作用
"\\d{4}\\.\\d{2}\\.\\d{2}"
还有其他尝试使它工作,但我得出的结论是,它与d,{}甚至与()分组字符有麻烦 这种模式适用于任何其他语言,甚至可用于这个庞大的示例列表http://pleac.sourceforge.net/pleac_ocaml/patternmatching.html
有什么想法吗?感谢
答案 0 :(得分:5)
如果您查看documentation of the Str
module,就会发现不支持\d
等Perl风格的符号。
答案 1 :(得分:1)
您可以使用支持“\ d”语法的其他库,例如ocaml-re(使用纯OCaml编写并支持多种正则表达式语法,包括POSIX和PCRE的子集)。
例如:
$ opam install re
$ ocaml
# #use "topfind";;
# #require "re.pcre";;
# let re = Re_pcre.regexp "\\d{4}\\.\\d{2}\\.\\d{2}";;
# Re.execp re "1234.01.243";;
- : bool = true
# Re.execp re "1234.501.24";;
- : bool = false