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上确实有效,但有一些奇怪的小问题需要注意。