Переменные

Enterprise

Новичок
Автор темы
18
2
Версия MoonLoader
.026-beta
Столкнулся с банальном проблемой и не могу ее решить xd
Вообщем есть код:
Lua:
pubic_g = 'Text: -'
ad_t = 'Text: -'
if pubic_g:match('.*' .. ad_t) then ; как я понимаю это звучит так, если в переменной public_g найден текст с переменной ad_t, то:
И тут я сталкиваюсь с проблемой, если в переменной ad_t и pubic_g есть символы : или -, то регулярка не сработает, а если этих символов нет, то сработает. Как решить?
 
Решение
Чтобы регулярное выражение работало корректно, необходимо экранировать специальные символы, такие как двоеточие и дефис, чтобы они воспринимались как обычные символы, а не как метасимволы. В Lua для экранирования символа используется символ %.

Таким образом, чтобы ваш код работал корректно, необходимо изменить регулярное выражение следующим образом:

if pubic_g:match('.*' .. ad_t:gsub("([%-:%%])", "%%%1")) then

В этом выражении используется функция gsub, которая заменяет все вхождения символов "-" и ":" на их экранированные версии, то есть "-%%" и "%%:", с помощью функции экранирования "%%". Таким образом, в итоговом регулярном выражении эти символы будут распознаны как обычные символы, а не как метасимволы.

zzalupka

Участник
48
22
Чтобы регулярное выражение работало корректно, необходимо экранировать специальные символы, такие как двоеточие и дефис, чтобы они воспринимались как обычные символы, а не как метасимволы. В Lua для экранирования символа используется символ %.

Таким образом, чтобы ваш код работал корректно, необходимо изменить регулярное выражение следующим образом:

if pubic_g:match('.*' .. ad_t:gsub("([%-:%%])", "%%%1")) then

В этом выражении используется функция gsub, которая заменяет все вхождения символов "-" и ":" на их экранированные версии, то есть "-%%" и "%%:", с помощью функции экранирования "%%". Таким образом, в итоговом регулярном выражении эти символы будут распознаны как обычные символы, а не как метасимволы.
 
  • Грустно
Реакции: Lance_Sterling