Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

Как вставить в шаблон регулярного выражения обратный слеш?

#python #регулярные_выражения


Вирусописатели в очередной раз прислали сотрудникам архив со скриптом на Javascript.
Там по хитрому собиратется какой-то адрес из обычных символов и символов в acsii (пример
\x65).

Так как изучаю Python хотел заменить эти ascii-символы на обычные прямо в тексте
и потом собрать в адрес. Пытаясь определить ascii-символы через регулярное выражение
наткнулся на такое что не могу написать обратный слеш в выражении. двойной обратный
слеш дает два слеша а не один как рассчитывал.
Подскажите написание регулярного выражения для строки вида "\x65".
    


Ответы

Ответ 1



https://ideone.com/fGi24c import re s = input() match = re.search('\\\\x\d\d', s, re.IGNORECASE) print(match)

Ответ 2



Обратный слеш в регулярных выражениях - так как в них он имеет специальное значение - нужно писать как пару обратные слешов - \\. Но Питон сам использует в обычных строковых литералах обратный слеш для специяльных символов, например символа перехода на новую строку \n. Потому в обычных строковых литералах Питона нужно писать обратный слеш тоже как пару обратных слешов - \\. В итоге для 2 обратных слешов нужно их писать 4: "\\\\" Но возможный тоже другой - лучший подход. Литералы с буквой r непосредственно перед открывающим апострофом или кавычкой понимает Питон буквенно, не интерпретируя их. В итоге у вас 2 подхода, как перенести из Питона в регулярное выражение нужные 2 обратные слеши: Написать 4 обратные слеши: "\\\\" - Питон будет каждую пару слешов интерпретировать как один, или Написать 2 обратные слеши, но начать строку с буквой r: r"\\".

Комментариев нет:

Отправить комментарий