0Pricing
Lua Academy · Урок

Синтаксис шаблонов 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 — локальная установка не требуется.

Все уроки этого курса

  1. Синтаксис шаблонов Lua
  2. Захваты и string.match
  3. string.gmatch для токенизации
  4. string.gsub для преобразований
← Назад к Lua Academy