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

jasons

Новичок
Автор темы
9
0
Здравствуйте, помогите , пожалуйста составить два регулярных выражения для строки
Пол: [Мужской]
И для строки
Деньги [$14624]
 
Решение
Lua:
v = [[
Пол: [Мужчина]
Уровень: [1]
Уважение: [0/8]
Деньги: [$200]

Номер телефона: [Не имеется]
Деньги в банке: [$0]
Состояние личного счета: [$0]
Деньги на депозите: [$0]
Работа: [None]
Организация: [Не имеется]
Уровень розыска: [0]
Законопослушность: 20/100

Защита: [-0% урона]
Регенерация: [0 HP в мин.]
Урон: [+0 урона]
Удача: [шанс 0% крит.урона]

Предупреждения: [0]
Наркозависимость: 0 [Нет зависимости]
Банковская карта: [Не имеется]
Статус: [Не имеется]
Возможность владеть 5-ю бизнесами: [НЕТ]
Возможность владеть 4-я домами: [НЕТ]
]]
local info = {}
info[1] = v:match("Пол: %[(%W+)%]")
info[2] = v:match("Уровень: %[(%d+)%]")
info[3] = v:match("Уважение: %[(%d+%/%d+)%]")
info[4] = v:match("Деньги: %[(%$%d+)%]")
info[5] =...

jasons

Новичок
Автор темы
9
0
Пол: %[(.+)%]
Деньги %[%$(%d+)%]

не работает ни одна , ни другая
Что имею вообще :

Пол: [Мужчина]
Уровень: [1]
Уважение: [0/8]
Деньги: [$200]

Номер телефона: [Не имеется]
Деньги в банке: [$0]
Состояние личного счета: [$0]
Деньги на депозите: [$0]
Работа: [None]
Организация: [Не имеется]
Уровень розыска: [0]
Законопослушность: 20/100

Защита: [-0% урона]
Регенерация: [0 HP в мин.]
Урон: [+0 урона]
Удача: [шанс 0% крит.урона]

Предупреждения: [0]
Наркозависимость: 0 [Нет зависимости]
Банковская карта: [Не имеется]
Статус: [Не имеется]
Возможность владеть 5-ю бизнесами: [НЕТ]
Возможность владеть 4-я домами: [НЕТ]


1 выдаёт остальные записи после пола - скрин 3
2 выдаёт ошибку 1-2 скрин

1601294293543.png
1601294348991.png
1601294496259.png
 

Fott

Простреленный
3,461
2,374
не работает ни одна , ни другая
Что имею вообще :

Пол: [Мужчина]
Уровень: [1]
Уважение: [0/8]
Деньги: [$200]

Номер телефона: [Не имеется]
Деньги в банке: [$0]
Состояние личного счета: [$0]
Деньги на депозите: [$0]
Работа: [None]
Организация: [Не имеется]
Уровень розыска: [0]
Законопослушность: 20/100

Защита: [-0% урона]
Регенерация: [0 HP в мин.]
Урон: [+0 урона]
Удача: [шанс 0% крит.урона]

Предупреждения: [0]
Наркозависимость: 0 [Нет зависимости]
Банковская карта: [Не имеется]
Статус: [Не имеется]
Возможность владеть 5-ю бизнесами: [НЕТ]
Возможность владеть 4-я домами: [НЕТ]


1 выдаёт остальные записи после пола - скрин 3
2 выдаёт ошибку 1-2 скрин

Посмотреть вложение 70131Посмотреть вложение 70132Посмотреть вложение 70134
Что это
1601294648698.png
 

Fott

Простреленный
3,461
2,374
  • Нравится
Реакции: jasons

Hatiko

Известный
Проверенный
1,502
620
1. Предоставь нормальный текст. То что ты вставил и что на скрине, разное.
2. Скажи что ты хочешь вытащить, конкретно, цифры или со знаком доллара цифры.
В круглых скобках в match ты указываешь то, что ты хочешь вытащить, не надо знак доллара в отдельные скобки заключать, просто заключи в единые, если требуется знак захватить.
Деньги: %[(%$%d+)%]
3. На скрине после Деньги: как будто табуляция стоит. Раз не можешь с пробелом определиться, сколько его, поставить надо %s+
Деньги:%s+%[(%$%d+)%]
4.В редакторе выстави кодировку ANSI 1251, чтобы русский язык нормально воспринимал
 

jasons

Новичок
Автор темы
9
0
1. Предоставь нормальный текст. То что ты вставил и что на скрине, разное.
2. Скажи что ты хочешь вытащить, конкретно, цифры или со знаком доллара цифры.
В круглых скобках в match ты указываешь то, что ты хочешь вытащить, не надо знак доллара в отдельные скобки заключать, просто заключи в единые, если требуется знак захватить.
Деньги: %[(%$%d+)%]
3. На скрине после Деньги: как будто табуляция стоит. Раз не можешь с пробелом определиться, сколько его, поставить надо %s+
Деньги:%s+%[(%$%d+)%]
4.В редакторе выстави кодировку ANSI 1251, чтобы русский язык нормально воспринимал


Мне из

Пол: [Мужчина]
Уровень: [1]
Уважение: [0/8]
Деньги: [$200]

Номер телефона: [Не имеется]
Деньги в банке: [$0]
Состояние личного счета: [$0]
Деньги на депозите: [$0]
Работа: [None]
Организация: [Не имеется]
Уровень розыска: [0]
Законопослушность: 20/100

Защита: [-0% урона]
Регенерация: [0 HP в мин.]
Урон: [+0 урона]
Удача: [шанс 0% крит.урона]

Предупреждения: [0]
Наркозависимость: 0 [Нет зависимости]
Банковская карта: [Не имеется]
Статус: [Не имеется]
Возможность владеть 5-ю бизнесами: [НЕТ]
Возможность владеть 4-я домами: [НЕТ]


надо вытащить


Пол: [Мужчина]
Уровень: [1]
Уважение: [0/8]
Деньги: [$200]
Деньги в банке: [$0]
Состояние личного счета: [$0]
Деньги на депозите: [$0]
Работа: [None]
Организация: [Не имеется]
Уровень розыска: [0]
 

Fott

Простреленный
3,461
2,374
Наверное правильнее будет так

Lua:
function ev.onShowDialog(dialogId,s,t,b1,b2,text)
    for line in text:gmatch("[^\n]+") do
        if line:find('Пол: %[(.+)%]') then
            pol = line:match('Пол: %[(.+)%]')
        end
        if line:find('Уровень: %[(%d+)%]') then
            lvl = line:match('Уровень: %[(%d+)%]')
        end
     end
 end
 
  • Нравится
Реакции: jasons

Hatiko

Известный
Проверенный
1,502
620
Lua:
v = [[
Пол: [Мужчина]
Уровень: [1]
Уважение: [0/8]
Деньги: [$200]

Номер телефона: [Не имеется]
Деньги в банке: [$0]
Состояние личного счета: [$0]
Деньги на депозите: [$0]
Работа: [None]
Организация: [Не имеется]
Уровень розыска: [0]
Законопослушность: 20/100

Защита: [-0% урона]
Регенерация: [0 HP в мин.]
Урон: [+0 урона]
Удача: [шанс 0% крит.урона]

Предупреждения: [0]
Наркозависимость: 0 [Нет зависимости]
Банковская карта: [Не имеется]
Статус: [Не имеется]
Возможность владеть 5-ю бизнесами: [НЕТ]
Возможность владеть 4-я домами: [НЕТ]
]]
local info = {}
info[1] = v:match("Пол: %[(%W+)%]")
info[2] = v:match("Уровень: %[(%d+)%]")
info[3] = v:match("Уважение: %[(%d+%/%d+)%]")
info[4] = v:match("Деньги: %[(%$%d+)%]")
info[5] = v:match("Деньги в банке: %[(%$%d+)%]")
info[6] = v:match("Состояние личного счета: %[(%$%d+)%]")
info[7] = v:match("Деньги на депозите: %[(%$%d+)%]")
info[8] = v:match("Работа: %[([а-яА-Я%a]+)%]")

print(table.concat(info, "\n"))

Выучи потом регулярки, раз хочешь скрипты писать, ты обязан их знать.
 
  • Нравится
Реакции: jasons и McLore

jasons

Новичок
Автор темы
9
0
Lua:
v = [[
Пол: [Мужчина]
Уровень: [1]
Уважение: [0/8]
Деньги: [$200]

Номер телефона: [Не имеется]
Деньги в банке: [$0]
Состояние личного счета: [$0]
Деньги на депозите: [$0]
Работа: [None]
Организация: [Не имеется]
Уровень розыска: [0]
Законопослушность: 20/100

Защита: [-0% урона]
Регенерация: [0 HP в мин.]
Урон: [+0 урона]
Удача: [шанс 0% крит.урона]

Предупреждения: [0]
Наркозависимость: 0 [Нет зависимости]
Банковская карта: [Не имеется]
Статус: [Не имеется]
Возможность владеть 5-ю бизнесами: [НЕТ]
Возможность владеть 4-я домами: [НЕТ]
]]
local info = {}
info[1] = v:match("Пол: %[(%W+)%]")
info[2] = v:match("Уровень: %[(%d+)%]")
info[3] = v:match("Уважение: %[(%d+%/%d+)%]")
info[4] = v:match("Деньги: %[(%$%d+)%]")
info[5] = v:match("Деньги в банке: %[(%$%d+)%]")
info[6] = v:match("Состояние личного счета: %[(%$%d+)%]")
info[7] = v:match("Деньги на депозите: %[(%$%d+)%]")
info[8] = v:match("Работа: %[([а-яА-Я%a]+)%]")

print(table.concat(info, "\n"))

Выучи потом регулярки, раз хочешь скрипты писать, ты обязан их знать.
Спасибо большое ☺️