为什么不工作正则表达式

Why doesnt work regex

代码示例

14> case re:run("5162754", "/^\d+$/") of {match, _} -> ok end.
** exception error: no case clause matching nomatch  
15> case re:run(<<"5162754">>, "/^\d+$/") of {match, _} -> ok end.
** exception error: no case clause matching nomatch

为什么不匹配?

两件事:

  1. 您传递给 re:run 的正则表达式不应被 / 包围。在其他语言中,您在 / 符号内编写正则表达式,但在 Erlang 中,正则表达式始终写为字符串,因此不需要 / 符号。

  2. 在 Erlang 字符串中,\d 表示 "delete" 字符(代码 127)。您在正则表达式中真正想要的是反斜杠后跟字母 d。为此,您需要使用另一个反斜杠转义反斜杠:

    > re:run("5162754", "^\d+$").
    {match,[{0,7}]}
    

尝试使用 [0-9] 它也可以使用反斜杠没有问题

re:run("5162754", "^[0-9]+$").