当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


erlang replace(Subject, RE, Replacement, Options)用法及代码示例


replace(Subject, RE, Replacement, Options) ->
 iodata() | unicode:charlist()
类型:
Subject = iodata() | unicode:charlist()
RE = mp() | iodata() | unicode:charlist()
Replacement = iodata() | unicode:charlist() | replace_fun()
Options = [Option]
Option = 
    anchored | global | notbol | noteol | notempty |
    notempty_atstart |
    {offset, integer() >= 0} |
    {newline, NLSpec} |
    bsr_anycrlf |
    {match_limit, integer() >= 0} |
    {match_limit_recursion, integer() >= 0} |
    bsr_unicode |
    {return, ReturnType} |
    CompileOpt
ReturnType = iodata | list | binary
CompileOpt = compile_option()
NLSpec = cr | crlf | lf | anycrlf | any

Subject 字符串的匹配部分替换为 Replacement

允许的选项与run/3,除了该选项 capture不允许。相反,{return, ReturnType}存在。默认返回类型是iodata,以尽量减少复制的方式构建。这iodata结果可以直接用于许多 I/O 操作。如果是平房list()如果需要,请指定{return, list}。如果需要二进制文件,请指定{return, binary}.

与函数 run/3 一样,使用选项 unicode 编译的 mp() 要求 Subject 为 Unicode charlist() 。如果编译是隐式完成的,并且为此函数指定了 unicode 编译选项,则正则表达式和 Subject 都将指定为有效的 Unicode charlist()

如果替换以字符串形式给出,则它可以包含特殊字符 & ,它将在结果中插入整个匹配表达式,以及特殊序列 \ N (其中 N 是大于 0 的整数)、\g N 或 \g{ N } 生成子表达式编号 N,并将其插入到结果中。如果正则表达式没有生成具有该编号的子表达式,则不会插入任何内容。

要在结果中插入 & 或 \,请在其前面添加 \。请注意,Erlang 已经在文字字符串中赋予了特殊含义,因此单个 \ 必须写为 "\\" ,因此双 \ 必须写为 "\\\\"

例子:

re:replace("abcd","c","[&]",[{return,list}]).

"ab[c]d"

尽管

re:replace("abcd","c","[\\&]",[{return,list}]).

"ab[&]d"

如果替换作为 fun 给出,则将使用整个匹配表达式作为第一个参数和子表达式匹配列表(按照它们在正则表达式中出现的顺序进行匹配)来调用。返回的值将被插入到结果中。

例子:

re:replace("abcd", ".(.)", fun(Whole, [<<C>>]) -> <<$#, Whole/binary, $-, (C - $a + $A), $#>> end, [{return, list}]).

"#ab-B#cd"
注意

如果非匹配的可选子表达式是正则表达式中的最后一个子表达式,则它们不会包含在子表达式匹配列表中。

例子:

正则表达式"(a)(b)?(c)?"("a",可选地后跟"b",可选地后跟"c")将创建以下子表达式列表:

  • [<<"a">>, <<"b">>, <<"c">>] 应用于字符串 "abc"
  • [<<"a">>, <<>>, <<"c">>] 应用于字符串 "acx"
  • [<<"a">>, <<"b">>] 应用于字符串 "abx"
  • [<<"a">>] 应用于字符串 "axx"

run/3,编译错误会引发badarg异常。compile/2可用于获取有关错误的更多信息。

相关用法


注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 replace(Subject, RE, Replacement, Options) -> iodata() | unicode:charlist()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。