正则表达式中的意外结果

shi*_*gus 4 python regex

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

给出结果(new_name)::

'_____shiv'
Run Code Online (Sandbox Code Playgroud)

代替::

'123__shiv'
Run Code Online (Sandbox Code Playgroud)

..提前付款

Roh*_*ain 5

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

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

pattern = '[- \\[\\]]'
Run Code Online (Sandbox Code Playgroud)

-一开始就动了.