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 replace(Subject, Pattern, Replacement, Options)用法及代码示例
- erlang replace(String, SearchPattern, Replacement)用法及代码示例
- erlang repair_continuation(Continuation, MatchSpec)用法及代码示例
- erlang reverse用法及代码示例
- erlang rename用法及代码示例
- erlang remove用法及代码示例
- erlang registered用法及代码示例
- erlang register用法及代码示例
- erlang register(RegName, PidOrPort)用法及代码示例
- erlang registered()用法及代码示例
- erlang read_file_info(Filename)用法及代码示例
- erlang read_file_info(File)用法及代码示例
- erlang remove(Key, Map1)用法及代码示例
- erlang referenced_byte_size(Binary)用法及代码示例
- erlang receive_response(RequestId, Timeout)用法及代码示例
- erlang reverse(String :: unicode:chardata())用法及代码示例
- erlang reverse(List1, Tail)用法及代码示例
- erlang relation_to_family(BinRel)用法及代码示例
- erlang relative_product(ListOfBinRels)用法及代码示例
- erlang relative_product1(BinRel1, BinRel2)用法及代码示例
- erlang restriction(BinRel1, Set)用法及代码示例
- erlang restriction(SetFun, Set1, Set2)用法及代码示例
- erlang recv(Socket)用法及代码示例
- erlang recompose(URIMap)用法及代码示例
- erlang resolve(RefURI, BaseURI)用法及代码示例
注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 replace(Subject, RE, Replacement, Options) -> iodata() | unicode:charlist()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。