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

Материал из UoPilot
Перейти к навигации Перейти к поиску
(Новая страница: «== Описание == '''string.match''' - поиск первого вхождения шаблона в строку. Возвращает захваченны...»)
 
 
Строка 4: Строка 4:
 
== Синтаксис ==
 
== Синтаксис ==
 
Привязка к окну: нет.
 
Привязка к окну: нет.
<br>Работа со свернутым окном: да.
+
<br>Работа со свернутым окном: да.
&lt;br>Параметры заключаются в скобки и разделяются запятыми.
+
<br>Параметры заключаются в скобки и разделяются запятыми.
  string.match (&lt;nowiki>&lt;s>, &lt;шаблон>&lt;/nowiki> [, стартовая_позиция_поиска])
+
  string.match (<nowiki><s>, <шаблон></nowiki> [, стартовая_позиция_поиска])
 
Или:
 
Или:
  &lt;nowiki>&lt;s>:match(&lt;шаблон>&lt;/nowiki> [, стартовая_позиция_поиска])
+
  <nowiki><s>:match(<шаблон></nowiki> [, стартовая_позиция_поиска])
 
Где:
 
Где:
&lt;br>'''s''' - строка.
+
<br>'''s''' - строка.
&lt;br>'''шаблон''' - что искать или регулярное выражение.
+
<br>'''шаблон''' - что искать или регулярное выражение.
&lt;br>'''стартовая_позиция_поиска''' - стартовая позиция поиска, по умолчанию 1. Необязательный параметр.
+
<br>'''стартовая_позиция_поиска''' - стартовая позиция поиска, по умолчанию 1. Необязательный параметр.
&lt;br>&lt;br>Поддерживаемые опции регулярных выражений:
+
<br><br>Поддерживаемые опции регулярных выражений:
 
  . -- Любой символ
 
  . -- Любой символ
 
  %a -- Буква (только англ.!)
 
  %a -- Буква (только англ.!)
Строка 69: Строка 69:
  
 
[[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.gmatch (Lua)]]
+
<br>[[String.gmatch (Lua)]]
&lt;br>[[String.format (Lua)]]
+
<br>[[String.format (Lua)]]

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

Описание

string.match - поиск первого вхождения шаблона в строку. Возвращает захваченные значения. Для поиска можно использовать регулярные выражения.

Синтаксис

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

string.match (<s>, <шаблон> [, стартовая_позиция_поиска])

Или:

<s>:match(<шаблон> [, стартовая_позиция_поиска])

Где:
s - строка.
шаблон - что искать или регулярное выражение.
стартовая_позиция_поиска - стартовая позиция поиска, по умолчанию 1. Необязательный параметр.

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

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

Примеры

--lua
local str1 = "Координаты: X = 360, Y = 638"       -- строка
local num = str1:match("%d+")      -- найти первое число в строке
log(num)
--lua
local str1 = "Координаты: X = 360, Y = 638"      -- строка
local num1, num2 = string.match(str1, "(%d+)[^%d]+(%d+)")    -- найти 2 числа, между числами могут присутствовать любые символы
log(num1, num2)
--lua
log ("clear") log ("mode compact")
local str1 = "С 12:30 до 13:15 обед"      -- строка
local num1, num2, num3, num4 = str1:match("(%d+)[^%d]+(%d+)[^%d]+(%d+)[^%d]+(%d+)")    -- найти 4 числа, между числами могут быть любые символы
log(num1, num2)
log(num3, num4)
--lua
local a = "tr"
local b = 123
local tmp = tostring(a):match("%d+")   -- если переменная 'a' является числом вернёт true, иначе false
log (tmp)
tmp = tostring(b):match("%d+")   -- если переменная 'b' является числом вернёт true, иначе false
log (tmp)
--lua
local str1 = "Недавно Вася съел 15 яблок, обжора..."
local a = str1:match("[съел]+%s+(%d+)%s+[яблок]+")    -- найти число между 'съел' и 'яблок'
hint(a)     -- показать в сообщении, в правом нижнем углу экрана

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

Tonumber (Lua)
Tostring (Lua)
String.find (Lua)
String.gsub (Lua)
String.gmatch (Lua)
String.format (Lua)