> Erlang中文手册 > run/3 根据正则表达式去匹配数据并返回匹配结果

re:run/3

根据正则表达式去匹配数据并返回匹配结果

用法:

run(Subject,RE,Options) -> {match, Captured} | match | nomatch

执行一个正则匹配,匹配成功则返回 {match, Captured},否则返回一个 nomatch 的原子。参数 RE 可以是正则字符串,也可以是用 re:compile/1 或 re:compile/2 预编译过的正则匹配指令。参数 Options 是一个匹配选项参数。

如果编译正则表达式时发生了异常错误,只会返回一个 badarg 的提示,错误的详细定位信息可以通过 re:compile/2 方法来查看

缺省第三个参数的情况下,返回的 Captured 值会包含匹配结果的开始的位置和匹配结果的长度,例如下面返回的是 [{2,1}],表示匹配结果在第 2 个字符后出现,匹配结果值的长度是 1。

re:run("just a test!", "s").

添加一个 global 参数,把所有匹配结果的匹配出来

re:run("just a test!", "s", [global]).

把第一个匹配结果以字符串的形式截取下来

re:run("just a test!", "s", [{capture, first, list}]).

把所有结果截取下来,并以字符串的形式返回

re:run("just a test!", "s", [global, {capture, all, list}]).

字符串里是否存在某个字符:

re:run("abc'defg", "j|k|'|m", [{capture, none}]).

一些常用例子:

匹配 IP:

re:run("HostName                    107.170.96.117", "(\\d{1,3}\\.){3}\\d{1,3}", [{capture, first, list}]).