【发布时间】:2023-03-13 08:15:02
【问题描述】:
令人惊讶的是,正则表达式匹配器无法正确匹配反斜杠。例如
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.split(~r{\}, "C:\foo\bar")产生什么? -
@MonkeyZeus 显然它不会产生任何东西,它不能被解析,因为右括号仍然在正则表达式中,用
~r{打开并且从不关闭(结束卷曲用反斜杠转义。) -
另一个选项(因为我猜你使用的是 Windows)是“C:/foo/bar” 正斜杠在 Windows 上确实有效,但有一些奇怪的小问题需要注意。跨度>
标签: regex erlang elixir elixir-iex