0

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

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

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

4

1 回答 1

4

只需$在末尾添加一个以匹配整行:

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

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

于 2013-08-20T19:20:04.803 回答