Попытка найти символы, которые не похожи на Hex в формате '\ x0a' - PullRequest
0 голосов
/ 14 апреля 2019

Я анализирую строку, содержащую магические числа файлов, но форматирование не соответствует. Некоторые шаблоны представлены в шестнадцатеричном формате с форматом '\ x0a' (где строка содержит экранированный символ, поэтому мне, очевидно, нужно искать оба символа), другие являются прямыми символами ASCII, а остальные находятся где-то посередине.

Я надеялся создать регулярное выражение, чтобы найти символы в строке, которые уже не являются шестнадцатеричными. Я попытался выполнить следующий поиск значений Hex с флагом инверсии.

(?!\\\\x[0-9 a-f]{2})

Это не сработало, как задумано, так как он видит х в следующем символе после полного совпадения и соответствует этому.

>>> test = "\\x50K\\x03\\x04"
>>> re.search("(?!\\\\x[0-9 a-f]{2})" test)
<re.Match object; span(1, 1), match=''>

Не получив положительных результатов и не перевернув их самостоятельно, я не уверен, как поступить.

Спасибо!

1 Ответ

0 голосов
/ 14 апреля 2019

Вы можете заменить шестнадцатеричные значения ничем следующим: re.sub(r'\\x[0-9 a-f]{2}','', your_line) и использовать то, что осталось - не шестнадцатеричные символы

...