String.gmatch (Lua)

Материал из UoPilot
Версия от 11:19, 28 августа 2019; Tatikoma (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Описание

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

Синтаксис

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

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

Или:

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

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

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

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

Поддерживаемые опции регулярных выражений:

.	-- Любой символ
%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)
Tostring (Lua)
String.find (Lua)
String.gsub (Lua)
String.match (Lua)
String.format (Lua)