Проблемы с пониманием того, почему не работает определенный шаблон Lua

Рассмотрим следующие тесты, выполненные на lua cli:

Lua 5.2.4  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> line = "Conference 1-12345-a.b.c (1 member rate: 32000 flags: running|answered|enforce_min|dynamic|exit_sound|enter_sound)"

Я пытаюсь извлечь 12345 из Conference 1-12345-a.b.c

Это работает:

> searchtextok = "1%-(%d%d%d%d)"
> print(string.match(line, searchtextok));
1234

Но это не удается:

> searchtextok = "1%-(%d%d%d%d)%-"
> print(string.match(line, searchtextok));
nil

Но я не понимаю, почему. Сейчас я читаю это, но если у вас есть подсказки, было бы здорово.


person Happydevdays    schedule 27.11.2015    source источник


Ответы (1)


Ваш первый шаблон означает "1, затем тире, а затем 4 цифры". Второй такой же, но с последующим дефисом. Поскольку после четырех цифр у вас есть еще одна цифра (1-12345-a.b.c), а не тире, матч проваливается.


Вы, вероятно, хотели сопоставить 5, а не 4 цифры. Просто измените его на:

"1%-(%d%d%d%d%d)%-"
person ndnenkov    schedule 27.11.2015
comment
да, я вижу это сейчас. я идиот! смотрел на это слишком долго - person Happydevdays; 27.11.2015
comment
@Happydevdays, иногда мы застреваем на глупостях. Бывает со всеми. - person ndnenkov; 27.11.2015
comment
спасибо за вашу терпеливую помощь. Мне нравится, когда такие люди, как ты, находятся в stackoverflow. так мило. еще раз спасибо. - person Happydevdays; 27.11.2015