我想在OCaml中使用 regexps ,似乎Str
模块提供了这些功能。
所以我尝试了一个简单的程序:
open Str
let regx = regexp "."
但是它给了我以下错误
文件“lol.ml”,第1行,字符0-1: 错误:链接lol.cmo时出错: 引用未定义的全局`Str'
好像模块不存在但如果我删除open Str
则表示regexp
是未绑定的值。
我不知道它是什么类型的问题,Str
应该是一个标准模块(根据http://caml.inria.fr/pub/docs/old-311/libref/Str.html)所以我无能为力......唯一的想法是我认为是签名( mli
)存在,但实现(ml
)不是。
我正在根据Objective Caml version 3.11.0
工具运行ocaml
。
任何人都可以帮我解决这个问题吗? 提前致谢
答案 0 :(得分:29)
来自the manual:
使用str库的程序必须按如下方式链接:
ocamlc other options str.cma other files ocamlopt other options str.cmxa other files
答案 1 :(得分:19)
或者你可以把
#load "str.cma";;
如果您在口译员中这样做
答案 2 :(得分:2)
作为Str
模块的替代方案,还有Re2
。
opam install re2
使用your_file.ml
中的模块,如下所示:
open Re2.Std
open Re2.Infix
let change input_text = Re2.rewrite_exn ~/"change this" "to that" input_text
let () = printf "%s" (change "change this")
使用ocamlbuild -use-ocamlfind -package re2 -package core -tag thread your_file.byte