String.gmatch (Lua)

Материал из UoPilot
Версия от 21:37, 27 августа 2019; Tatikoma (обсуждение | вклад) (Новая страница: «== Описание == '''string.gmatch''' - возвращает итератор, который, при каждом вызове, возвращает сле...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Описание

string.gmatch - возвращает итератор, который, при каждом вызове, возвращает следующее вхождение шаблона в строке. Если шаблон не содержит захватов, то простое сравнение будет выполнено при каждом вызове. Для поиска можно использовать регулярные выражения.

Синтаксис

Привязка к окну: нет. <br>Работа со свернутым окном: да. <br>Параметры заключаются в скобки и разделяются запятыми.

string.gmatch (<nowiki><s>, <шаблон>)</nowiki>

Или:

<nowiki><s>:gmatch(<шаблон>)</nowiki>

Где: <br>s - строка. <br>шаблон - что искать или регулярное выражение. <br>Или:

for <nowiki><var></nowiki> in string.gmatch(<nowiki><s>, <шаблон></nowiki>) do
    -- код
end

Где: <br>var - переменная, которой на каждой итерации будет присвоен результат поиска. <br><br>Поддерживаемые опции регулярных выражений:

.	-- Любой символ
%a	-- Буква (только англ.!)
%A	-- Любая буква (русская), символ, или цифра, кроме английской буквы 
%c	-- Управляющий символ
%d	-- Цифра
%D	-- Любая буква, или символ, кроме цифры
%l	-- Буква в нижней раскладке (только англ.!)
%L	-- Любая буква, символ, или цифра, кроме английской буквы в нижней раскладке
%p	-- Символ пунктуации
%P	-- Любая буква, символ, или цифра, кроме символа пунктуации
%s	-- Символ пробел
%S	-- Любая буква, символ, или цифра, кроме символа пробела
%u	-- Буква в верхней раскладке (только англ.!)
%U	-- Любая буква, символ, или цифра, кроме английской буквы в верхней раскладке
%w	-- Любая буква, или цифра (только англ.!)
%W	-- Любой символ, или буква (русская), кроме английской буквы, или цифры
%x	-- Шестнадцатеричное число
%X	-- Любая буква, или символ,  кроме цифры, или английской буквы, используемой в записи шестнадцатеричного числа 
%z	-- Строковые параметры, содержащие символы с кодом 0

Примеры

--lua
log ("clear") log ("mode compact")    -- очистить лог, компактный режим
local str1 = "hello world from Lua"          -- строка
for w in string.gmatch(str1, "%a+") do   -- цикл, ищет все слова в строке
    log(w)                            -- вывести в лог содержимое переменной 'w'
end
--lua
log ("clear") log ("mode compact")      -- очистить лог, компактный режим
local str1 = "Координаты: X = 360, Y = 638"    -- строка
for w in string.gmatch(str1, "%d+") do   -- искать все числа в строке
    log(w)                              -- вывести в лог
end
--lua
local str1 = "Координаты: X = 360, Y = 638, цвет = 255"    -- строка
local arr = {}    -- массив, в который будет записан результат поиска
for w in string.gmatch(str1, "%d+") do   -- искать все числа в строке
    table.insert(arr, w)                -- добавить значение переменной w в массив
end
log ("clear") log ("mode compact")      -- очистить лог, компактный режим
log(table.concat(arr, ", "))            -- вывести в лог содержимое массива через запятую, arr[1] - первый элемент, arr[2] - второй и т. д.
--lua
local str1 = "С 12:30 до 13:15 обед"      -- строка
local arr = {}    -- массив, в который будет записан результат поиска
for w in string.gmatch(str1, "%d+%:%d+") do   -- искать в строке время в формате число:число
    table.insert(arr, w)                -- добавить значение переменной w в массив
end
log ("clear") log ("mode compact")      -- очистить лог, компактный режим
log(table.concat(arr, ", "))            -- вывести в лог содержимое массива через запятую

Смотрите также

Tonumber (Lua) <br>Tostring (Lua) <br>String.find (Lua) <br>String.gsub (Lua) <br>String.match (Lua) <br>String.format (Lua)