Проблемы с соответствием каретки в регулярном выражении Python - PullRequest
2 голосов
/ 19 августа 2010

У меня есть следующее регулярное выражение, которое, я думаю, должно соответствовать любому символу, который не является буквенно-цифровым, '!', '?' Или '.'

re.compile('[^A-z ?!.]')

Однако в iPython я получаю странный результат:

In [21]: re.sub(a, ' ', 'Hey !$%^&*.#$%^&.')
Out[21]: 'Hey !  ^  .   ^ .'

Результат тот же, когда я выхожу из '.' в регулярном выражении.

Как мне сопоставить каретку, чтобы она также удалялась из строки?

Ответы [ 2 ]

3 голосов
/ 19 августа 2010

В вашем регулярном выражении есть ошибка.Обратите внимание, что регистр a и z важен.A-z включает все символы между значением ASCII 65 (A) и 122 (Z), которое включает символ вставки (код ASCII 94).

Попробуйте вместо этого:

re.compile('[^A-Za-z ?!.]')

Пример:

import re
regex = re.compile('[^A-Za-z ?!.]')
result = regex.sub(' ', 'Hey !$%^&*.#$%^&.')
print result

Результат:

Hey !     .     .
0 голосов
/ 19 августа 2010

Каретка находится в верхнем и нижнем регистре в ASCII.Вам нужно [^a-zA-Z ?!\.]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...