string.gmatch для токенизации
Перебирайте все совпадения в строке с помощью string.gmatch.
«string.gmatch для токенизации» — бесплатный урок Lua Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Lua Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Lua Academy содержит 4 уроков всего.
Что такое string.gmatch?
string.gmatch(s, pattern) возвращает итератор, который последовательно возвращает все совпадения pattern в строке s.
Итерация по словам
Разделяйте строку на слова, находя последовательности символов, не являющихся пробелами.
local s = "the quick brown fox"
for word in s:gmatch("%S+") do
print(word)
endСбор совпадений в таблицу
Соберите все совпадения в таблицу для дальнейшей обработки.
local function split(s, pat)
local parts = {}
for token in s:gmatch(pat) do
parts[#parts+1] = token
end
return parts
end
local words = split("one two three", "%S+")
print(#words) -- 3Извлечение чисел
Извлекайте из строки все целые числа с помощью шаблона %d+.
local s = "x=10, y=20, z=30"
for n in s:gmatch("%d+") do
print(tonumber(n))
endИспользование захватов в string.gmatch
Если шаблон содержит захваты, на каждой итерации возвращаются захваченные группы, а не совпадение целиком.
local s = "from=Alice, to=Bob, cc=Carol"
for k, v in s:gmatch("(%w+)=(%w+)") do
print(k, "->", v)
endРазбор CSV
Разделяйте строку CSV, захватывая всё содержимое между запятыми.
local csv = "apple,banana,cherry,date"
for field in (csv .. ","):gmatch("([^,]*),") do
print(field)
endРазбор пар ключ–значение
Разберите строку заголовка в стиле HTTP в таблицу пар ключ–значение.
local headers = "Content-Type: text/html; Content-Length: 1234"
local parsed = {}
for k, v in headers:gmatch("([%w%-]+): ([^;]+)") do
parsed[k] = v:match("^%s*(.-)%s*$")
endПодсчёт вхождений шаблона
Подсчитайте, сколько раз шаблон встречается в строке.
local function count(s, pat)
local n = 0
for _ in s:gmatch(pat) do n = n + 1 end
return n
end
print(count("banana", "an")) -- 2Разбор предложений
Разделяйте текст на предложения, находя фрагменты до знаков пунктуации.
local text = "Hello. How are you? Fine!"
for sent in text:gmatch("[^.!?]+[.!?]?") do
print(sent:match("^%s*(.-)%s*$"))
endСравнение string.gmatch и string.find в цикле
string.gmatch — предпочтительный способ перебрать все совпадения. Использование string.find в цикле while многословнее и чаще приводит к ошибкам.
Ограничения Unicode
Шаблоны Lua работают с байтами. Многобайтные символы UTF-8 могут неправильно сопоставляться с шаблонами для одного символа. Для полноценной поддержки Unicode используйте библиотеку UTF-8.
Вопрос о string.gmatch
По чему выполняется итерация в for w in s:gmatch("%S+") do?
Повторение: string.gmatch
string.gmatch — стандартный токенизатор Lua. Используйте его, чтобы разделять строки, извлекать все числа, разбирать пары ключ–значение и подсчитывать вхождения шаблона в удобном цикле с итератором.
Изучай Lua с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 40
- Уроки
- 159
Часто задаваемые вопросы
Урок «string.gmatch для токенизации» бесплатный?
Да — полный текст урока «string.gmatch для токенизации» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Lua Academy, подпишись на CoddyKit PRO. Курс Lua Academy содержит 4 уроков всего.
Чему я научусь в уроке «string.gmatch для токенизации»?
Перебирайте все совпадения в строке с помощью string.gmatch. Ты практикуешь Lua Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Lua Academy?
Предыдущий опыт не требуется. Lua Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «string.gmatch для токенизации»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Lua Academy?
Да. Каждый урок Lua Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Синтаксис шаблонов Lua
- Захваты и string.match
- string.gmatch для токенизации
- string.gsub для преобразований