#python #regex #python-3.x #special-characters
#python #регулярное выражение #python-3.x #специальные символы
Вопрос:
Я анализирую строку, содержащую магические числа файла, но форматирование несовместимо. Некоторые шаблоны представлены в шестнадцатеричном формате с форматом ‘ x0a’ (где строка содержит экранированный символ, поэтому мне, очевидно, нужно искать оба символа), другие — это прямые символы ASCII, а остальные находятся где-то посередине.
Я надеялся создать регулярное выражение для поиска символов в строке, которые еще не являются шестнадцатеричными. Я попытался выполнить следующий поиск шестнадцатеричных значений с флагом инверсии.
(?!\\x[0-9 a-f]{2})
Это не сработало так, как предполагалось, поскольку он видит x в следующем символе после полного совпадения и соответствует этому.
>>> test = "\x50K\x03\x04"
>>> re.search("(?!\\x[0-9 a-f]{2})" test)
<re.Match object; span(1, 1), match=''>
Не получая положительных результатов и не инвертируя их самостоятельно, я не уверен, как действовать дальше.
Спасибо!
Ответ №1:
Вы можете заменить шестнадцатеричные значения ничем подобным: re.sub(r'\x[0-9 a-f]{2}','', your_line)
и использовать то, что осталось — не шестнадцатеричные символы
Комментарии:
1. ОК. Основываясь на вашем предложении, я принял решение. Однако я не знаю, должен ли я поместить это в комментарий или в отдельный ответ