String.gmatch (Lua): различия между версиями

Материал из UoPilot
Перейти к навигации Перейти к поиску
(Новая страница: «== Описание == '''string.gmatch''' - возвращает итератор, который, при каждом вызове, возвращает сле...»)
 
 
Строка 4: Строка 4:
 
== Синтаксис ==
 
== Синтаксис ==
 
Привязка к окну: нет.
 
Привязка к окну: нет.
<br>Работа со свернутым окном: да.
+
<br>Работа со свернутым окном: да.
&lt;br>Параметры заключаются в скобки и разделяются запятыми.
+
<br>Параметры заключаются в скобки и разделяются запятыми.
  string.gmatch (&lt;nowiki>&lt;s>, &lt;шаблон>)&lt;/nowiki>
+
  string.gmatch (<nowiki><s>, <шаблон>)</nowiki>
 
Или:
 
Или:
  &lt;nowiki>&lt;s>:gmatch(&lt;шаблон>)&lt;/nowiki>
+
  <nowiki><s>:gmatch(<шаблон>)</nowiki>
 
Где:
 
Где:
&lt;br>'''s''' - строка.
+
<br>'''s''' - строка.
&lt;br>'''шаблон''' - что искать или регулярное выражение.
+
<br>'''шаблон''' - что искать или регулярное выражение.
&lt;br>Или:
+
<br>Или:
  for &lt;nowiki>&lt;var>&lt;/nowiki> in string.gmatch(&lt;nowiki>&lt;s>, &lt;шаблон>&lt;/nowiki>) do
+
  for <nowiki><var></nowiki> in string.gmatch(<nowiki><s>, <шаблон></nowiki>) do
 
     -- код
 
     -- код
 
  end
 
  end
 
Где:
 
Где:
&lt;br>'''var''' - переменная, которой на каждой итерации будет присвоен результат поиска.
+
<br>'''var''' - переменная, которой на каждой итерации будет присвоен результат поиска.
&lt;br>&lt;br>Поддерживаемые опции регулярных выражений:
+
<br><br>Поддерживаемые опции регулярных выражений:
 
  . -- Любой символ
 
  . -- Любой символ
 
  %a -- Буква (только англ.!)
 
  %a -- Буква (только англ.!)
Строка 76: Строка 76:
  
 
[[Tonumber (Lua)]]
 
[[Tonumber (Lua)]]
&lt;br>[[Tostring (Lua)]]
+
<br>[[Tostring (Lua)]]
&lt;br>[[String.find (Lua)]]
+
<br>[[String.find (Lua)]]
&lt;br>[[String.gsub (Lua)]]
+
<br>[[String.gsub (Lua)]]
&lt;br>[[String.match (Lua)]]
+
<br>[[String.match (Lua)]]
&lt;br>[[String.format (Lua)]]
+
<br>[[String.format (Lua)]]

Текущая версия на 11:19, 28 августа 2019

Описание

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)