我正在尝试编写一些代码来验证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阅读了文档并尝试了一些选项,但尚未弄明白。
答案 0 :(得分:4)
只需在末尾添加$
即可匹配整行:
^([a-zA-Z0-9]{1,50}:[^:][ ]?[a-zA-Z0-9\.\-\_\+]{1,50})$
^ here
这是正则表达式的一个特性,而不是Erlang。