Проблемы с пониманием, почему не работает определенный шаблон 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)%-"
Другие вопросы по тегам