Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Elixir正则表达式匹配文字反斜杠_Regex_Erlang_Elixir_Elixir Iex - Fatal编程技术网

Regex Elixir正则表达式匹配文字反斜杠

Regex Elixir正则表达式匹配文字反斜杠,regex,erlang,elixir,elixir-iex,Regex,Erlang,Elixir,Elixir Iex,令人惊讶的是,正则表达式匹配器没有正确地匹配反斜杠。比如说 Regex.split(~r{\\}, "C:\foo\bar") ["C:\foo\bar"] Regex.match?(~r/\\/, "C:\foo\bar") false 我期待一场积极的比赛,但也许我错了。让我们测试一下: Regex.escape("\\") "\\\\" Regex.split(~r{\\\\}, "C:\foo\bar") ["C:\foo\bar"] Regex.match?(~r/\\\\/, "C

令人惊讶的是,正则表达式匹配器没有正确地匹配反斜杠。比如说

Regex.split(~r{\\}, "C:\foo\bar")
["C:\foo\bar"]
Regex.match?(~r/\\/, "C:\foo\bar")
false
我期待一场积极的比赛,但也许我错了。让我们测试一下:

Regex.escape("\\")
"\\\\"
Regex.split(~r{\\\\}, "C:\foo\bar")
["C:\foo\bar"]
Regex.match?(~r/\\\\/, "C:\foo\bar")
false

还是没有对手。在这一点上我相当困惑。如何在正则表达式中转义\以匹配文本\正如您在我的用例中看到的那样,我想拆分一个windows路径。

regex很好;你的输入不是你想象的那样。字符串内的反斜杠转义

String.splitC:\foo\bar, ⇒[,C,:,\f,o,o,b,a,r,] String.lengthC:\foo\bar ⇒ 8 注意这里的\f和\b。字符串不包含反斜杠,但包含\f和\b代码点

也就是说,您需要将一个适当的字符串传递给Regex.split/3以产生预期的结果

Regex.split~r |\\\\|,C:\\foo\\bar ⇒[C:,foo,bar]
正则表达式很好;你的输入不是你想象的那样。字符串内的反斜杠转义

String.splitC:\foo\bar, ⇒[,C,:,\f,o,o,b,a,r,] String.lengthC:\foo\bar ⇒ 8 注意这里的\f和\b。字符串不包含反斜杠,但包含\f和\b代码点

也就是说,您需要将一个适当的字符串传递给Regex.split/3以产生预期的结果

Regex.split~r |\\\\|,C:\\foo\\bar ⇒[C:,foo,bar]
Regex.split~r{\},C:\foo\bar产生什么?@MonkeyZeus显然它不产生任何东西,它无法被解析,因为右括号仍然在正则表达式中,用~r打开{和never closed closing curly用反斜杠转义。另一个选项是C:/foo/bar,因为我猜您正在使用Windows。正斜杠在Windows上确实有效,但有一些奇怪的小问题需要注意。Regex.split~r{\},C:\foo\bar product?@MonkeyZeus显然它不产生任何东西,它无法被解析,因为右括号仍然在正则表达式中,用~r打开{和never closed closing curly用反斜杠转义。另一个选项是C:/foo/bar,因为我猜您正在使用Windows。正斜杠在Windows上确实有效,但有一些奇怪的小问题需要注意。