трабл с регулярным выражениями

m1wlak

Участник
Автор темы
63
19
Версия MoonLoader
.026-beta
Нужно скрыть строчку где будет: а\c
пишу проверку на "а\с.+" , но выдаёт:
лог:
[15:54:25.996094] (error)    trpsshelperbym1wlak.lua: D:\GAMES\Samp\moonloader\trpsshelperbym1wlak.lua:142: invalid escape sequence near '"а'
с обычным слешем всё нормально.
 
Решение
Нужно в find символ обратной черты \ экранировать им же, т.к. обратная черта является служебным символом.
string.find(text, "a\\c.+")
Для справки, чтобы не путать.
\ - обратная черта, бекслеш
/ - обычная прямая черта, слеш

Hatiko

Известный
Проверенный
1,489
616
Предоставь строку из чат-лога в качестве примера, в которой требуется уловить требуемое тебе слово.
И немного распиши суть, что ты хочешь проверять.
Также напиши, как ты сделал проверку.
 

m1wlak

Участник
Автор темы
63
19
Предоставь строку из чат-лога в качестве примера, в которой требуется уловить требуемое тебе слово.
И немного распиши суть, что ты хочешь проверять.
Также напиши, как ты сделал проверку.
чатлог:
[Реклама RC]{ffffff} Продам а\с "Усы #2". Цена: 2.000.000$. Пишите SMS.
нужно скрыть строчку, где будет "а\с".
код:
local ev = require "lib.samp.events"

function ev.onServerMessage(color, text)
    if string.find(text, "a\c.+") then
        return false
    end
end
ну и таже самая ошибка
мунлог:
[16:29:46.051310] (error)    da.lua: D:\GAMES\Samp\moonloader\da.lua:4: invalid escape sequence near '"a'
[16:29:46.051310] (error)    da.lua: Script died due to an error. (01BAFB5C)
С обратным (обычным) слешем, как я писал, тоже самое работает.
 

Hatiko

Известный
Проверенный
1,489
616
Нужно в find символ обратной черты \ экранировать им же, т.к. обратная черта является служебным символом.
string.find(text, "a\\c.+")
Для справки, чтобы не путать.
\ - обратная черта, бекслеш
/ - обычная прямая черта, слеш
 
  • Нравится
Реакции: m1wlak