регулярные выражение с плавающей точкой

Theopka

Участник
Автор темы
42
19
Версия MoonLoader
Другое
Я ищу текст, [Аренда авто] Vova_Sanch [ID: 47] арендовал у вас Optimus Prime Track на 1ч за 450.000$ (в час: $450.000)

вот код который я написал, но не понимаю как доставать текст с плавующей точкой(но есть два вариант и без точки и с точкой)


Lua:
    local nick, cars, time, money = text:match("%[Аренда авто%] (.+) арендовал у вас (.+) на  (%d+)ч за %$")
    if nick and cars and time then
        save_log('Игрок '..nick..' арендовал у вас '..cars..' на '..time..'ч за '..money..'$')
    end

как искать текст с плавующеё точкой и без(два варианта)
 

wojciech?

Известный
Проверенный
366
245
Lua:
local str = "[Аренда авто] Vova_Sanch [ID: 47] арендовал у вас Optimus Prime Track на 1ч за 450.000$ (в час: $450.000)"

local name, id, vehicle, hour, cash, cashph = str:match("%[Аренда авто%] ([%w_]+) %[ID: (%d+)%] арендовал у вас (.-) на (%d+)ч за ([%d%.]+)%$ %(в час: %$([%d%.]+)%)")
print(name, id, vehicle, hour, cash, cashph) -- Vova_Sanch    47    Optimus Prime Track    1    450.000    450.000

если нужно искать из нескольких разных наборов символов можно использовать [], внутри которых нужно указать, что конкретно найти нужно:
Lua:
-- из кода выше
"[%w_]+" -- найдет шаблон, где есть символы формата %w (A-z0-9) и _
"[%d%.]+" -- найдет шаблон, где есть цифры и точки

при этом, необязательно, чтобы все символы были в шаблоне, т.е. если тут [%d%.]+ не будет числа или точки (... или 555), то он всё равно вернет значение
 
  • Нравится
Реакции: Theopka