正则表达式中的意外结果

时间:2013-01-28 19:53:18

标签: python regex

pattern = r'[ -\\[\\]]'
regex = re.compile(pattern)
name = '123[ shiv'
new_name = regex.sub('_',name)

给出结果(new_name)::

'_____shiv'

代替::

'123__shiv'

.. thanx提前

1 个答案:

答案 0 :(得分:5)

您的正则表达式正在创建从whitespace (ASCII代码 - 32)opening bracket - [ (ASCII代码 - 91)的范围介于两者之间-。该范围包括数字0 to 9 (ASCII代码 - 48到57)

您需要将正则表达式更改为: -

pattern = '[- \\[\\]]'

在开头移动了-