代码示例
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
为什么它不匹配?
答案 0 :(得分:3)
两件事:
您传递给re:run
的正则表达式不应被/
包围。在其他语言中,您在/
符号内写了一个正则表达式,但在Erlang中,正则表达式总是写成字符串,因此不需要/
符号。
在Erlang字符串中,\d
代表&#34;删除&#34;字符(代码127)。你在regexp中真正想要的是一个反斜杠,后跟字母d
。要实现这一点,您需要使用另一个反斜杠来转义反斜杠:
> re:run("5162754", "^\\d+$").
{match,[{0,7}]}
答案 1 :(得分:1)
尝试使用[0-9]它也可以使用,反斜杠没有问题
re:run("5162754", "^[0-9]+$").