Как сопоставить непечатаемые символы в регулярном выражении Python?

Как вы сопоставляете непечатаемые символы в регулярном выражении Python? В моем случае у меня есть строка, содержащая комбинацию печатаемых и непечатаемых символов.

Example String: "Det 3 @ NYY 5 ?7" where the ? is either 0x7f or 0x80.

В приведенном выше примере мне нужно сопоставить 0x7f или 0x80. Как указать это в регулярном выражении Python?


person Community    schedule 01.04.2011    source источник


Ответы (2)


Используйте диапазон символов.

'[\x7f\x80]'
person Ignacio Vazquez-Abrams    schedule 01.04.2011
comment
@Ignacio Поскольку dehlenbe редко присутствует в SO, я спрашиваю вас: '?' не является непечатаемым символом, а dehlenbe использовал этот символ как символ в Det 3 @ NYY 5 ?7 для представления непечатаемого символа, у которого нет символа, состоящего только из одного символа ? Это оно ? - person eyquem; 24.08.2011
comment
@eyquem: Правильно. В globs подстановочный знак ? соответствует одному символу. - person Ignacio Vazquez-Abrams; 25.08.2011

Может быть, вы можете попробовать

[^[:print:]]

для непечатаемых.

person kurumi    schedule 01.04.2011
comment
Наборы символов POSIX не поддерживаются в python - person kevins; 14.08.2014
comment
это если вы используете модуль regex - person not2qubit; 26.10.2018
comment
Работает, как и ожидалось, однако включает пробельные символы, такие как \t, что может быть не так. - person cagney; 11.10.2019