为啥正则表达式不起作用
Posted
技术标签:
【中文标题】为啥正则表达式不起作用【英文标题】:Why doesnt work regex为什么正则表达式不起作用 【发布时间】:2015-04-13 01:43:01 【问题描述】:代码示例
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 中,正则表达式始终写为字符串,因此不需要 /
符号。
在 Erlang 字符串中,\d
表示“删除”字符(代码 127)。你在你的正则表达式中真正想要的是一个反斜杠,后跟字母d
。为此,您需要使用另一个反斜杠来转义反斜杠:
> re:run("5162754", "^\\d+$").
match,[0,7]
【讨论】:
【参考方案2】:尝试使用 [0-9] 也可以,反斜杠没有问题
re:run("5162754", "^[0-9]+$").
【讨论】:
以上是关于为啥正则表达式不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥这个正则表达式不起作用:r'.*logo.*' [重复]