> Erlang中文手册 > compile/2 把一个正则表达式编译成一个正则匹配指令

re:compile/2

把一个正则表达式编译成一个正则匹配指令

用法:

compile(Regexp,Options) -> {ok, MP} | {error, ErrSpec}

跟 re:compile/1 一样,都是把一个正则表达式编译成一个匹配模式的正则指令,参数 Regexp 可以是任意 Perl 风格的正则表达式,只是多了一个选项参数 Options

匹配中文的正则表达式

re:compile("[\x{4e00}-\x{9fa5}]+", [unicode])

如果一个正则表达式多次使用到,那么把正则表达式预先编译是一种很高效的做法,可以一次编译,多次调用。

re:compile/2 经常跟 re:run/2、re:run/3、re:replace/3、re:replace/4、re:split/2、re:split/3 这几个正则函数搭配使用

Url = "Http://220.181.112.143/",
{ok, MatchPattern} = re:compile("\\d{1,3}\.\\d{1,3}\.\\d{1,3}\.\\d{1,3}", [{capture, first, list}]),
re:run(Url, MatchPattern).
{ok, MatchPattern} = re:compile("[^A-Za-z]"),
re:replace("abcd123 *ef% 456gh**ijklmn~~~", MatchPattern, "", [global, {return, list}]).
Content = "sdfsdfsdfLJDSLFJDSLFJDSL",
re:split(Content, "", [{return, list}])