Попытка найти символы, которые не похожи на Hex в формате ‘ x0a’

#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. ОК. Основываясь на вашем предложении, я принял решение. Однако я не знаю, должен ли я поместить это в комментарий или в отдельный ответ