регулярных выражений в Lua

Grizzly_1337

Участник
Автор темы
32
20
Почему иногда пишут в скобка.
Например "(d+)" и "d+" и "[d+]"
Какая разница? И почему?
 
Последнее редактирование:
Решение
Lua:
str = "У меня 25 яблок, у тебя 7 яблок"

-- (%d+)
var1, var2 = str:match("У меня (%d+), у тебя (%d+) яблок")
-- как видишь, теперь в переменной var1 будет число 25 (в виде строки),
-- а в переменной var2 будет число 7 (в виде строки)
-- Таким образом ты захватываешь нужный тебе текст с помощью круглых скобок.



-- %d+
var1 = "У меня %d+ яблок, у тебя %d+ яблок"
-- В переменной var1 будет полностью вся найденная строка, отдельно ничего не захватывает.



-- [%d+]
-- Никогда такого не видел.
-- Но я бы написал это так:
var1 = str:match("У меня [%d абв]+, у тебя [%d абв]+ яблок")
-- Из квадратных скобок подставляется только один символ из перечисленных в них. Тось %d - число или одна из букв "а, б, в", также в примере я сделал пробел...

Double Tap Inside

Известный
Проверенный
1,898
1,252
Lua:
str = "У меня 25 яблок, у тебя 7 яблок"

-- (%d+)
var1, var2 = str:match("У меня (%d+), у тебя (%d+) яблок")
-- как видишь, теперь в переменной var1 будет число 25 (в виде строки),
-- а в переменной var2 будет число 7 (в виде строки)
-- Таким образом ты захватываешь нужный тебе текст с помощью круглых скобок.



-- %d+
var1 = "У меня %d+ яблок, у тебя %d+ яблок"
-- В переменной var1 будет полностью вся найденная строка, отдельно ничего не захватывает.



-- [%d+]
-- Никогда такого не видел.
-- Но я бы написал это так:
var1 = str:match("У меня [%d абв]+, у тебя [%d абв]+ яблок")
-- Из квадратных скобок подставляется только один символ из перечисленных в них. Тось %d - число или одна из букв "а, б, в", также в примере я сделал пробел - он тоже как бы подходит под этот шаблон.
-- Таким образом если бы вместо кол. яблоко было бы "ааабббввваа", то патерн для поиска бы сработал тоже, среагировал на эти три буквы.



-- +
-- Плюсик после символа означает, что таких символов должно быть 1 или больше.


-- %
-- Означает, что следующий символ особо специальный, например "%d" которое означает одну циферку. "%d+" означает же 1 или больше циферок.

Почитай там всякие луа для чайников. Должно помочь.