Регулярные

Viant

Участник
Автор темы
56
2
Всем привет, помогите с регулярным выражение, не могу в них разобраться, нужно вытащить название транспорта и его стоимость с текста и отобразить в чат (название транспорта и его цена может меняться):
[Информация] Гос.стоимость AT-99 Scorpion транспортного средства составляет - $17000000
 
Последнее редактирование:

chromiusj

Известный
Модератор
5,651
3,953
Lua:
local text ='[Информация] Гос.стоимость AT-99 Scorpion транспортного средства составляет - $17000000'
local price,name = text:match('%[Информация%] Гос%.стоимость (.+) транспортного средства составляет %- %$(%d+)')
print(name,price)
 
  • Нравится
Реакции: Улиточка

Viant

Участник
Автор темы
56
2
Lua:
local text ='[Информация] Гос.стоимость AT-99 Scorpion транспортного средства составляет - $17000000'
local price,name = text:match('%[Информация%] Гос%.стоимость (.+) транспортного средства составляет %- %$(%d+)')
print(name,price)
не подойдет, строку я дал для примера они могут быть как такие:
[Информация] Гос.стоимость Bullet транспортного средства составляет - $1750000
[Информация] Гос.стоимость AT-99 Scorpion транспортного средства составляет - $17000000
[Информация] Гос.стоимость Samolet транспортного средства составляет - $43124123400000000
Так и абсолютно разными в плане транспорта и цены.
 

Дядя Энрик.

Активный
338
81
Lua:
function sampev.onServerMessage(color, text)
     if text:find('%[Информация%] Гос.стоимость .+ транспортного средства составляет %- $%d+') then
         transport, money = text:match('%[Информация%] Гос.стоимость (.+) транспортного средства составляет %- $(%d+)')
         sampAddChatMessage('[Информация] Гос.стоимость '..transport..' транспортного средства составляет - $'..money, -1)
     end
end
1703904990703.png

так? Поиск текста + над ним выводит sampAddChatMessage, сам можешь потом отредактировать как тебе надо.
 

Viant

Участник
Автор темы
56
2
может я что-то не так понимаю, вот скрин текста из чата:
1703908775176.png

Вот команда чтобы получить транспорт /getprice (id) - нужен кар личный (не важно, свой или не свой)

Lua:
function sampev.onServerMessage(color, text)
     if text:find('%[Информация%] Гос.стоимость .+ транспортного средства составляет %- $%d+') then
         transport, money = text:match('%[Информация%] Гос.стоимость (.+) транспортного средства составляет %- $(%d+)')
         sampAddChatMessage('[Информация] Гос.стоимость '..transport..' транспортного средства составляет - $'..money, -1)
     end
end
Посмотреть вложение 226499
так? Поиск текста + над ним выводит sampAddChatMessage, сам можешь потом отредактировать как тебе надо.
вот это не работает
 

chromiusj

Известный
Модератор
5,651
3,953
может я что-то не так понимаю, вот скрин текста из чата:
Посмотреть вложение 226517
Вот команда чтобы получить транспорт /getprice (id) - нужен кар личный (не важно, свой или не свой)


вот это не работает
Потому что там присутствует цветовой код...Дай строку нормально,и полностью
 

chromiusj

Известный
Модератор
5,651
3,953
[Информация]{ffffff} Гос.стоимость Virgo транспортного средства составляет - $690000

поидее вот цвет информации: 73B461
Lua:
local text = '{ffff00}[Информация] {ffffff}Гос.стоимость AT-99 Scorpion транспортного средства составляет - $17000000'
local price, name = text:gsub('%b{}',''):match('%[Информация%] Гос%.стоимость (.+) транспортного средства составляет %- %$(%d+)')
print(name, price)
 

Viant

Участник
Автор темы
56
2
Lua:
local text = '{ffff00}[Информация] {ffffff}Гос.стоимость AT-99 Scorpion транспортного средства составляет - $17000000'
local price, name = text:gsub('%b{}',''):match('%[Информация%] Гос%.стоимость (.+) транспортного средства составляет %- %$(%d+)')
print(name, price)
и как мне это засунуть в onServerMessage?

и почему текст транспорта и цены статичен, он же динамический
 

Fott

Простреленный
3,461
2,377
и как мне это засунуть в onServerMessage?

и почему текст транспорта и цены статичен, он же динамический
Тебе дали готовый и рабочий код, а ты задаешь тупые вопросы. Вообще название темы это дайте мне регулярку. Тебе дали и функцию и пример и регулярку, а ты не можешь вставить её в код. Читай гайд.
 
  • Нравится
Реакции: chromiusj

Fott

Простреленный
3,461
2,377
ну так бля, если я пытался раз 50 уже засунуть и у меня, то не находит текст, либо же выдает nil значение price
Откуда мы знаем че и куда ты засовывал? Может палец в жопу, может ты вообще строку от руки переписал, может просто файл в кодировке не той. А может вообще у тебя код неправильный.
Экстрасенсы ёлку наряжают сори, как освободятся погадают в чем ошибка. Ты чашку оставь с кофейной гущей, мы передадим
 

Dmitriy Makarov

25.05.2021
Проверенный
2,505
1,133
Кодировка скрипта должна быть Windows-1251.
Lua:
require("lib.samp.events").onServerMessage = function(color, text)
    local carName, carPrice = text:gsub("{.-}", ""):match("%[Информация%] Гос.стоимость (.+) транспортного средства составляет %- %$(.+)")
    if carName and carPrice then
        lua_thread.create(function() wait(10)
            sampAddChatMessage(("Транспорт: %s | Цена: %s"):format(carName, carPrice), -1)
        end)
    end
end
1703967006013.png

1703967010273.png

1703967013442.png
 

Вложения

  • script.lua
    377 байт · Просмотры: 1