當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。