OCaml 用正则切分字符串的操作

今天给大家分享一下OCaml 的基本操作,如何用OCaml,利用正则表达式,切分字符串。

使用场景:我们从netrc文件中读取配置,然后解析,解析的第一步,需要切分字符串,然后才能还原数据字段,并进行执行和分析

我们的示例数据

"machine google.com login admin password hellomotog"
 
我们先看一下代码
let netrcStr: string = "machine google.com  login admin password hellomotog"
let re_whitespace = Re.Posix.compile_pat "[\t ]+"
let () =
  let strList = Re.split re_whitespace netrcStr in 
  let twoStr =  String.concat "," strList in
  print_endline twoStr;;
  

执行结果为

$ dune build ./bin/bsmi_ocaml_hello.exe
$ dune exec ./bin/bsmi_ocaml_hello.exe 
machine,google.com,login,admin,password,hellomotog

 

第一行,我们定义了原始字符串,当然,你可以从文件中读取。但是我们为了简化,所以直接定一个字符串。

第二行,我们定义了正则匹配的规则, Re.Posix.compile_pat,就是匹配空格 和 \t ,两个字符的标记,一个或多个

第三行开始我们就正式干活了。

首先是用Re.split 然后第一个参数是刚刚定的正则规则,第二个参数是原始字符串。  这一步会得到一个切分好的 string list

下一行,我们用逗号把list拼接起来作为一个字符串,交给下一行print_endline打印。

整个程序到这里就结束了。

我们回顾一下,关键是我们先用compile_pat定义正则规则。

然后 切分的函数是Re.split, 你切分字符串,得到一个string list。

然后你可以访问这个list的元素。想要什么就手到擒来了

分类: 默认 标签: 发布于: 2022-06-28 11:14:56, 更新于: 2022-06-28 11:18:16