Python正则表达式中定位符匹配问题
我有一个正则表达式,我觉得它应该能匹配任何不是字母、数字、'!'、'?' 或 '.' 的字符。
re.compile('[^A-z ?!.]')
但是,在 iPython 中我得到了一个奇怪的结果:
In [21]: re.sub(a, ' ', 'Hey !$%^&*.#$%^&.')
Out[21]: 'Hey ! ^ . ^ .'
当我在正则表达式中对 '.' 进行转义时,结果也是一样的。
我该怎么做才能把插入符号(^)也从字符串中去掉呢?
2 个回答
0
在ASCII码中,大写字母和小写字母之间有一个插入符号。你需要用这个表达式 [^a-zA-Z ?!\.]
来表示。
3
你的正则表达式有个错误。注意字母 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 ! . .