我需要用其他字符串替换子字符串,而字符串中没有替换:,但在re:
但是,为了使用re:replace,我需要引用所有正则表达式特定的元字符,如[。等
在ocaml中,它被称为Str.quote。
val quote : string -> string
Str.quote s returns a regexp string that matches exactly s and nothing else.
来自http://caml.inria.fr/pub/docs/manual-ocaml/libref/Str.html
Erlang中调用的函数是什么?
答案 0 :(得分:2)
您应该考虑将字符串转换为二进制文件并使用binary:replace/3,4
,而不是引用正则表达式特殊字符。
答案 1 :(得分:0)
在Elixir中找到它,名为regex:escape。转换为Erlang它看起来像这样(需要查看unicode并返回二进制标志)。
escape(String) ->
re:replace(String, "[.^$*+?()[{\\\|\s#]", "\\\\&",[global]).
http://elixir-lang.org/docs/stable/elixir/Regex.html#escape/1
{:ok, pattern} = :re.compile(~S"[.^$*+?()[{\\\|\s#]", [:unicode])
@escape_pattern pattern
def escape(string) when is_binary(string) do
:re.replace(string, @escape_pattern, "\\\\&", [:global, {:return, :binary}])
end