2013-08-20 2 views
0

Я пытаюсь написать код для проверки списка разделенных двоеточиями пар k/v в erlang. Я могу получить следующее выражение для соответствия одной паре.Регулярное выражение Erlang должно соответствовать цельной строке

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

Итак, если я передаю тэг ключа: значение совпадает с ожидаемым. Но, мне нужно, чтобы он НЕ совпал, если я передаю что-то вроде ключа: значение: 123. Похоже, что происходит то, что re возвращает {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 

Это особенность регулярных выражений, не Erlang конкретно.

+0

Argh! Я даже знал это! Спасибо! (а также @Michelle) – RockyMountainHigh