Erlang正则表达式必须匹配整个字符串

时间:2013-08-20 19:13:43

标签: regex erlang

我正在尝试编写一些代码来验证erlang中冒号分隔的k / v对的列表。我可以得到以下表达式来匹配一对。

re:run(Tag, "^([a-zA-Z0-9]{1,50}:[^:][ ]?[a-zA-Z0-9\\.\\-\\_\\+]{1,50})")

所以,如果我传递key:value的标签,它会按预期匹配。但是,如果我传递类似key:value:123的东西,我需要它不匹配。似乎正在发生的事情是,如果字符串的任何部分匹配,则返回{match,Match}。但是,如果ENTIRE字符串匹配,我需要它才返回匹配。有没有办法在erlang中这样做?我在http://www.erlang.org/doc/man/re.html阅读了文档并尝试了一些选项,但尚未弄明白。

1 个答案:

答案 0 :(得分:4)

只需在末尾添加$即可匹配整行:

^([a-zA-Z0-9]{1,50}:[^:][ ]?[a-zA-Z0-9\.\-\_\+]{1,50})$
                                                      ^ here

这是正则表达式的一个特性,而不是Erlang。