Проблемы с пониманием, почему не работает определенный шаблон 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
Но я не понимаю почему. Я сейчас читаю это, но если у вас есть какие-либо указатели, это было бы здорово.
1 ответ
Решение
То, что означает ваш первый паттерн, это "1, затем тире и 4 цифры". Второй такой же, но сопровождается чертой. Поскольку после четырех цифр у вас есть еще одна цифра (1-1234 5- abc), а не тире, совпадение не выполняется.
Вы, вероятно, хотели сопоставить 5, а не 4 цифры. Просто измените его на:
"1%-(%d%d%d%d%d)%-"