169 похожих чатов

Дороу! У кого-нибудь есть в загашнике проверенная функция экранирования, аналог re.escape

в Python?

Из доки:
» Escape all the characters in pattern except ASCII letters and numbers

9 ответов

38 просмотров
Daniil-Smolyakov Автор вопроса

function escapeString(str) local escapedStr = "" for i = 1, #str do local char = string.sub(str, i, i) if string.match(char, "[^%a%d]") then escapedStr = escapedStr .. "\\" .. char else escapedStr = escapedStr .. char end end return escapedStr end function unescapeString(str) local unescapedStr = "" local i = 1 while i <= #str do local char = string.sub(str, i, i) if char == "\\" then i = i + 1 char = string.sub(str, i, i) end unescapedStr = unescapedStr .. char i = i + 1 end return unescapedStr end local inputString = "Hello, \\world! 123" local escapedString = escapeString(inputString) local unescapedString = unescapeString(escapedString) print(inputString) print(escapedString) print(unescapedString)

ммм... у тебя старая версия питона что-ли? В питоне у этой функции именно задача убрать из строки символы, которые имеют специальное значение в библиотеке паттерн марчинга. В луа аналог со схожим смыслом функционала был-бы например таким (с обратными слешами лишнее, это я сделал чтобы всё это дело можно было легко скопипастить с выхлопа интерпретатора снова в строку): repl = { ['\\'] = '\\\\' } string.gsub('Hello, \\world! [_%w] 123', '[%^%$%(%)%%%.%[%]%*%+%-%?\\%.]', function(c) if repl[c] then return repl[c] else return '%'..(c) end end) -- Hello, \\world! %[_%%w%] 123 4 string.find('Hello, \\world! [_%w] 123', "Hello, \\world! %[_%%w%] 123") -- 1 24

Daniil-Smolyakov Автор вопроса
UtoECat
screenshot ммм... у тебя старая версия питона что-ли? В питон...

Ну я тоже долго не сидел) И мне нравится, что читается легко - никто после меня не будет полчаса сидеть думать, как это работает))

лучше узнай более точно что от тебя хотят по возможностям. А то может они этим аргументы SQL запроса экранировать будут...

Daniil Smolyakov
Ну я тоже долго не сидел) И мне нравится, что чита...

если просто заменить всё что не буквы-цифры, то ещё проще : string.gsub('Hello, \\world! 123', '[^%w ]', function(c) return '\\'..string.byte(c) end) -- Hello\44 \92world\33 123 3 print("Hello\44 \92world\33 123") -- Hello, \world! 123

Daniil-Smolyakov Автор вопроса
UtoECat
если просто заменить всё что не буквы-цифры, то ещ...

Запятую и восклицательный знак пропустил)

Daniil Smolyakov
Запятую и восклицательный знак пропустил)

нет не пропутиил, почитай код внимательно. Выхлоп функии выше - в принте аргументом

Daniil-Smolyakov Автор вопроса
UtoECat
нет не пропутиил, почитай код внимательно. Выхлоп ...

Да-да, норм. Я просто скопипастил и запустил, а у тебя не для этого пример)

Похожие вопросы

Обсуждают сегодня

коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
объясните, я прада не понимаю. зачем в перле нужен аниивент? кому он пригодился в действительно нагруженных проектах?
nerv
30
Никто случаем не знает, как по-хорошему делается дозапись текста в edit на винапи?
The Bird of Hermes
25
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
А какие у этого try практические плюсы перед eval?
Oleg Volkov
41
Составить программу для подсчета числа нулевых символов с использованием команд управления циклом loop. Мы проходили TASM, если вдруг нужно будет. Если никто не хочет помогать...
Гарри Поттер
10
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Ребзя, а кто-нибудь делал на сайте Турбо Страницы Яндекса? Какую-то пользу они дают или нет? Приносят ли трафик?
Андрей [aharito] Харитонов
20
Hi, I installed mysql 8 like this: wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.11-1_all.deb sudo dpkg -i mysql-apt-config_0.8.11-1_all.deb sudo apt-get install mysq...
Liran
1
Карта сайта