OCaml,如何使用Page模块反汇编大型多行文本数据。忽略新行开头的符号。
let get_info content =
let re = Str.regexp "\\(.+?\\)" in
match Str.string_match re content 0 with
| true -> print_endline("-->"^(Str.matched_group 1 content)^"<--")
| false -> print_endline("not found");;
此示例仅返回第一行,但需要多行中的一些文本。
答案 0 :(得分:2)
根据http://pleac.sourceforge.net/pleac_ocaml/patternmatching.html:
- Str的正则表达式缺少空格匹配模式。
所以,这是在该页面上建议的解决方法:
#load "str.cma";;
...
let whitespace_chars =
String.concat ""
(List.map (String.make 1)
[
Char.chr 9; (* HT *)
Char.chr 10; (* LF *)
Char.chr 11; (* VT *)
Char.chr 12; (* FF *)
Char.chr 13; (* CR *)
Char.chr 32; (* space *)
])
然后
let re = Str.regexp "\\((?:[^" ^ whitespace_chars ^ "]|" ^ whitespace_chars ^ ")+?\\)" in