我有以下正则表达式,我认为应该匹配任何不是字母数字的字符,'!','?'或'。'
re.compile('[^A-z ?!.]')
但是,我在iPython中得到以下奇怪的结果:
In [21]: re.sub(a, ' ', 'Hey !$%^&*.#$%^&.')
Out[21]: 'Hey ! ^ . ^ .'
当我逃离''时,结果是一样的。在正则表达式中。
如何匹配插入符号,以便它也从字符串中删除?
答案 0 :(得分: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 ! . .
答案 1 :(得分:0)
插入符号以ASCII格式落在大写和小写之间。您需要[^a-zA-Z ?!\.]