Регулярные

Viant

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

хромиус)

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

Viant

Участник
Автор темы
49
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
Так и абсолютно разными в плане транспорта и цены.
 

Дядя Энрик.

Активный
320
75
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

Участник
Автор темы
49
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, сам можешь потом отредактировать как тебе надо.
вот это не работает
 

хромиус)

спокойно, это всего лишь слива
Друг
4,950
3,217
может я что-то не так понимаю, вот скрин текста из чата:
Посмотреть вложение 226517
Вот команда чтобы получить транспорт /getprice (id) - нужен кар личный (не важно, свой или не свой)


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

хромиус)

спокойно, это всего лишь слива
Друг
4,950
3,217
[Информация]{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

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

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

Fott

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

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

Fott

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

Dmitriy Makarov

25.05.2021
Проверенный
2,481
1,113
Кодировка скрипта должна быть 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