Несмотря на то, что вы уже получили два ответа, которые нашли все шестнадцатеричные числа, здесь то же самое с прямым регулярным выражением, которое находит весь текст, не похожий на шестнадцатеричное число (при условии, что это две буквы / цифры в верхнем / нижнем регистре 0-9 и диапазон АФ, за которым следует пробел).
Как-то так (извините, я не питонер, но вы поняли):
newstring = re.sub(r"[^ ]+(?<![0-9A-Fa-f ]{2}|^.)", "", yourstring)
Работает "оглядываясь назад ".Он находит каждую последовательную непробельную подстроку, а затем оглядывается назад с (?<!....)
.Там написано: «если два предыдущих символа не были шестнадцатеричным числом, то получилось».Маленький ^.
в конце предотвращает неправильное совпадение с первым символом строки.
Edit
Как и предположил Алан Мур, вот та же идея с положительным прогнозным выражением:
newstring = re.sub(r"(?>\b[0-9A-Fa-f ]{2}\b)", "", yourstring)