String.match (Lua)
Версия от 11:19, 28 августа 2019; Tatikoma (обсуждение | вклад)
Содержание
Описание
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)