在Python正则表达式中匹配插入符号的问题

时间:2010-08-19 18:12:59

标签: python regex

我有以下正则表达式,我认为应该匹配任何不是字母数字的字符,'!','?'或'。'

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

但是,我在iPython中得到以下奇怪的结果:

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

当我逃离''时,结果是一样的。在正则表达式中。

如何匹配插入符号,以便它也从字符串中删除?

2 个答案:

答案 0 :(得分:3)

正则表达式中有错误。请注意,az的情况很重要。 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 ?!\.]