Синтаксис шаблонов Lua
Изучите классы символов %d, %a, %s, якоря и квантификаторы в шаблонах Lua.
«Синтаксис шаблонов Lua» — бесплатный урок Lua Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Lua Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Lua Academy содержит 4 уроков всего.
Шаблоны Lua и регулярные выражения
В Lua используется собственный язык шаблонов, а не полноценные регулярные выражения POSIX. Он проще и быстрее, но не поддерживает чередование (|) и опережающие проверки.
Классы символов
%d — цифра, %a — буква, %l — строчная буква, %u — прописная буква, %s — пробельный символ, %p — знак пунктуации, %w — буквенно-цифровой символ. Прописная буква инвертирует значение: %D = не цифра.
Кванторы
* ноль или более раз (жадный), + один или более раз, ? ноль или один раз, - ноль или более раз (ленивое, самое короткое совпадение).
local s = "hello world"
print(s:match("%a+")) -- hello (first word)
print(s:match(".-o")) -- hell (lazy stops early)Якоря
^ привязывает совпадение к началу строки, а $ — к концу.
print(("hello"):match("^h")) -- h
print(("hello"):match("o$")) -- o
print(("hello"):match("^world")) -- nilНаборы символов с []
Пользовательские классы символов: [aeiou] соответствует любой гласной, [^aeiou] — любой не гласной, а [a-z] — строчным буквам.
local s = "Hello World 123"
print(s:match("[A-Z]")) -- H
print(s:match("[0-9]+")) -- 123Экранирование специальных символов
Специальные символы ( ) . % + - * ? [ ^ $ необходимо экранировать с помощью %.
local s = "price: 3.14"
print(s:match("%d+%.%d+")) -- 3.14 (. escaped to match literal dot)Подстановочный символ .
. соответствует одному любому символу. Объединяйте его с кванторами: .- задаёт ленивое совпадение с любым содержимым.
print(("abc123"):match("(.-)%d")) -- abc (lazy, stops at first digit)Граничный шаблон %f
%f[set] соответствует пустой позиции между символом, отсутствующим в set, и символом, входящим в set. Это удобно для обозначения границ слов.
local s = "hello world foo"
for w in s:gmatch("%f[%a]%a+") do
print(w) -- hello, world, foo
endСравнение string.find и string.match
string.find возвращает начальный и конечный индексы (а также захваченные значения). string.match напрямую возвращает совпавший текст (или захваченные значения).
local s = "date: 2025-01-15"
local i, j = s:find("%d%d%d%d%-%d%d%-%d%d")
print(i, j) -- 7 16
print(s:match("(%d+)-(%d+)-(%d+)")) -- 2025 01 15Сбалансированное совпадение %b
%bxy соответствует сбалансированной паре символов x и y. Например, %b() соответствует сбалансированным скобкам, включая вложенные.
local s = "func(a, (b+c), d)"
print(s:match("%b()")) -- (a, (b+c), d)Ограничения шаблонов
Шаблоны Lua не поддерживают чередование (a|b), обратные ссылки, опережающую и ретроспективную проверки или именованные группы. Для этого используйте LPEG или внешнюю библиотеку регулярных выражений.
Вопрос о синтаксисе шаблонов
Какой шаблон соответствует одной или более цифрам?
Повторение: синтаксис шаблонов Lua
В шаблонах Lua используются классы %d %a %s, кванторы * + ? -, якоря ^ $, наборы [] и %b для поиска сбалансированных пар. Они эффективны, но не поддерживают чередование, доступное в регулярных выражениях.
Часто задаваемые вопросы
Урок «Синтаксис шаблонов Lua» бесплатный?
Да — полный текст урока «Синтаксис шаблонов Lua» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Lua Academy, подпишись на CoddyKit PRO. Курс Lua Academy содержит 4 уроков всего.
Чему я научусь в уроке «Синтаксис шаблонов Lua»?
Изучите классы символов %d, %a, %s, якоря и квантификаторы в шаблонах Lua. Ты практикуешь Lua Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Lua Academy?
Предыдущий опыт не требуется. Lua Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Синтаксис шаблонов Lua»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Lua Academy?
Да. Каждый урок Lua Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Синтаксис шаблонов Lua
- Захваты и string.match
- string.gmatch для токенизации
- string.gsub для преобразований