Гайд Урок по регулярным выражениям и использование хука.

  • Автор темы Удалённый пользователь 341712
  • Дата начала

vadimka0216

Известный
38
63
У кого-нибудь бывали проблемы с тем, что после ввода четвертого алфавита на кириллице, регулярка перестает находить подстроку? Проверил на латинском алфавите, все норм



UPD:
Решил проблему, подставив числовые коды, вместо стандартных символов:
[А]="\208\144"; [а]="\208\176"; [Б]="\208\145"; [б]="\208\177"; [В]="\208\146"; [в]="\208\178"; [Г]="\208\147"; [г]="\208\179"; [Д]="\208\148"; [д]="\208\180"; [Е]="\208\149"; [е]="\208\181"; [Ё]="\208\129"; [ё]="\209\145"; [Ж]="\208\150"; [ж]="\208\182"; [З]="\208\151"; [з]="\208\183"; [И]="\208\152"; [и]="\208\184"; [Й]="\208\153"; [й]="\208\185"; [К]="\208\154"; [к]="\208\186"; [Л]="\208\155"; [л]="\208\187"; [М]="\208\156"; [м]="\208\188"; [Н]="\208\157"; [н]="\208\189"; [О]="\208\158"; [о]="\208\190"; [П]="\208\159"; [п]="\208\191"; [Р]="\208\160"; [р]="\209\128"; [С]="\208\161"; [с]="\209\129"; [Т]="\208\162"; [т]="\209\130"; [У]="\208\163"; [у]="\209\131"; [Ф]="\208\164"; [ф]="\209\132"; [Х]="\208\165"; [Х]="\208\165"; [Ц]="\208\166"; [ц]="\209\134"; [Ч]="\208\167"; [ч]="\209\135"; [Ш]="\208\168"; [ш]="\209\136"; [Щ]="\208\169"; [щ]="\209\137"; [Ъ]="\208\170"; [ъ]="\209\138"; [Ы]="\208\171"; [ы]="\209\139"; [Ь]="\208\172"; [ь]="\209\140"; [Э]="\208\173"; [э]="\209\141"; [Ю]="\208\174"; [ю]="\209\142"; [Я]="\208\175"; [я]="\209\143";
 

Вложения

  • 1635674629324.png
    1635674629324.png
    223.3 KB · Просмотры: 95
  • 1635674648752.png
    1635674648752.png
    193.3 KB · Просмотры: 90
  • 1635675131183.png
    1635675131183.png
    174 KB · Просмотры: 86
Последнее редактирование:

Farshmak_Savage

Новичок
25
1
Код:
if text:find('.+%[%w+]: %w+_%w+%[%d+] ответил %w+_%w+%[%d+]:.+') then
данный код ищет сообщения от всех игроков в формате Nick_Name[0] ответил Nick_Name[1]: русский текст
но как сделать, что бы искало только мои сообщения в таком формате?
 

biscuitt

Известный
185
14
Код:
if text:find('.+%[%w+]: %w+_%w+%[%d+] ответил %w+_%w+%[%d+]:.+') then
данный код ищет сообщения от всех игроков в формате Nick_Name[0] ответил Nick_Name[1]: русский текст
но как сделать, что бы искало только мои сообщения в таком формате?
объявить переменную со своим ником и вместо %w+_%w+ вписать переменную
 

|Il|Il|

Активный
408
70
SEfnuYODq0HfL-Yv8w-IzPToZc8AsStb02c2ALqwYAha8Z0PyoUWsjq2dpE15YPw2hDR1i90UiVQYTkFyXyqaJS6.jpg

как перевести в регулярку предложение [EARS] ? кто знает переведите пожалуйста

 

Carlos92zeiss

Известный
27
2
A как скопировать чат?
Например автоактивации написал. " поймал (%A) "
А как мне сказать это сообщение в своем чате что я поймал?
 

whyega

52NGG
Модератор
2,614
2,340
A как скопировать чат?
Например автоактивации написал. " поймал (%A) "
А как мне сказать это сообщение в своем чате что я поймал?
Lua:
local pattern = " поймал (%A)"

if text:find(pattern) then
    local fragment = text:match(pattern)
    sampSendChat(fragment)
end
 
  • Нравится
Реакции: Carlos92zeiss

ARZ Anonim

Известный
8
0
Искренне не могу понять, как можно подтянуть регулярку, если в самом начале стоит пробел.

Lua:
-- Пример строки (между timestamp и ником два пробела): [23:43:45]  Nick_Name принимает дозу наркотиков
function samp.onServerMessage(color, text)
    nick, input = string. Match(text, ' ([a-zA-Z_]+)% вылечил игрока')
    if text:find(' %w+_%w+% вылечил игрока %w+') and antihp.v then
        sampSendChat('/weap '..nick.." Нарушение Правил МП")
        sampSendChat("/spplayer "..nick)
        printStringNow("~r~~h~HEAL SPAWN ~w~"..nick, 5000)
        sampSendChat("/pm "..nick.." 1 Запрещено пополнять здоровье на мероприятии!")
        sampSendChat("/smp "..nick.." был дисквалифицирован за пополнение здоровья на мероприятии!")
    end
end
 

XRLM

Известный
1,650
973
Искренне не могу понять, как можно подтянуть регулярку, если в самом начале стоит пробел.

Lua:
-- Пример строки (между timestamp и ником два пробела): [23:43:45]  Nick_Name принимает дозу наркотиков
function samp.onServerMessage(color, text)
    nick, input = string. Match(text, ' ([a-zA-Z_]+)% вылечил игрока')
    if text:find(' %w+_%w+% вылечил игрока %w+') and antihp.v then
        sampSendChat('/weap '..nick.." Нарушение Правил МП")
        sampSendChat("/spplayer "..nick)
        printStringNow("~r~~h~HEAL SPAWN ~w~"..nick, 5000)
        sampSendChat("/pm "..nick.." 1 Запрещено пополнять здоровье на мероприятии!")
        sampSendChat("/smp "..nick.." был дисквалифицирован за пополнение здоровья на мероприятии!")
    end
end
%s

 
  • Клоун
Реакции: Air_Official

XRLM

Известный
1,650
973
Малёхо не понял куда её всунуть. Можешь показать на примере кода выше
на место всех пробельных символов
Lua:
function samp.onServerMessage(color, text)
    nick, input = string. Match(text, '%s([a-zA-Z_]+)% вылечил игрока')
    if text:find('%s%w+_%w+% вылечил игрока %w+') and antihp.v then
        sampSendChat('/weap '..nick.." Нарушение Правил МП")
        sampSendChat("/spplayer "..nick)
        printStringNow("~r~~h~HEAL SPAWN ~w~"..nick, 5000)
        sampSendChat("/pm "..nick.." 1 Запрещено пополнять здоровье на мероприятии!")
        sampSendChat("/smp "..nick.." был дисквалифицирован за пополнение здоровья на мероприятии!")
    end
end
 
  • Клоун
Реакции: Air_Official