2013-08-20 86 views
0

我想写一些代码来验证erlang中冒号分隔的k/v对列表。我可以得到下面的表达式来匹配一对。Erlang正则表达式必须匹配整个字符串

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的文档,并尝试了几个选项,但尚未弄清楚。

+2

您是否尝试在正则表达式的末尾添加'$'? – Michelle

回答

4

只是在末尾添加$相匹配的全系列:

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

这是正则表达式的功能,而不是二郎神特别。

+0

啊!我甚至知道!谢谢! (以及@Michelle) – RockyMountainHigh