Регулярное выражение

James Hawk

Известный
Автор темы
919
218
Накосячил с регуляркой, прошу вашей помощи.
Допустим, есть текст "{FFFFFF}Nick_name[id]: {FFFFFFF}1111111"
Каким образом правильно получить "1111111"?

Как пытался получить я:
Lua:
local id, numb = text:match("{.+}[^%d+]%[(%d+)%]:{.+}(%d+)")
И киньте кто-то сурс на специальные символы для регулярки, пожалуйста

P.S. Цветной текст для юзеров с тёмной темой
 
Последнее редактирование:

James Hawk

Известный
Автор темы
919
218
.*%:%s%{.-%}(%d+)
И чтобы присвоить найденное значение переменной используй string.match, так как string.find не возвращает найденный по паттерну текст, а только булин (true/false)
Так я match и юзаю
 

James Hawk

Известный
Автор темы
919
218
Хз что у тебя там не работает, у меня все отлично
Lua:
function test()
    local text = "{FFFFFF}Nick_name[id]: {FFFFFFF}1111111"
    sampAddChatMessage(text:match('.*%:%s%{.-%}(%d+)'), -1)
end
Буду дома, проверю ещё раз
Хз что у тебя там не работает, у меня все отлично
Lua:
function test()
    local text = "{FFFFFF}Nick_name[id]: {FFFFFFF}1111111"
    sampAddChatMessage(text:match('.*%:%s%{.-%}(%d+)'), -1)
end
что имею я
Lua:
local text, _, _, _ = sampGetChatString(99)
sampAddChatMessage(text, -1) -- строка есть, всё ок
local numb =  string.match(text,".*%:%s%{.*%}(%d+)")
wait(100)
sampAddChatMessage(tostring(numb), -1) -- строки нет
Версия муна у тебя какая? (мало ли, в чём дело) Я на 0.27
 
Последнее редактирование:

Shamanije

Известный
Друг
957
924
Я пробовал и то, что писал ты
значит строка отличается от той, что ты указал выше. у меня все работает отлично. от версии муна это не зависит, 027 все так же крутится 5.2 луа
 

James Hawk

Известный
Автор темы
919
218
значит строка отличается от той, что ты указал выше. у меня все работает отлично. от версии муна это не зависит, 027 все так же крутится 5.2 луа
Я проверяю строку "{FFFFFF}James_Hawk[0]: {33CCFF}1234567" (разница небольшая)
 

Petr_Sergeevich

Известный
Проверенный
707
298
.*%:%s%{.-%}(%d+)
И чтобы присвоить найденное значение переменной используй string.match, так как string.find не возвращает найденный по паттерну текст, а только булин (true/false)

string.find(...) возвращает начальный и конечный индекс запрашиваемого шаблона, но никак не true/false
В условии просто проверяется, что хоть какой-то результат существует и не равен nil