#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"\\".
Комментариев нет:
Отправить комментарий