Python 用正则表达式替换两个不同的字符

Python 用正则表达式替换两个不同的字符,python,regex,Python,Regex,我想使用正则表达式在括号、算术运算符和数字之间添加一个空格 例如,我想用(+23)替换(+23) 我写了这个正则表达式,但似乎不起作用: ((\(|\))[\d\w +*/-])+ 我使用Python替换字符串中的字符。我想您需要这样的东西 >>> import re >>> s = "(+ 2 3)" >>> m = re.sub(r'(?<=\()(?=[-\d+/*])|(?<=[-\d+/*])(?=\))', r' '

我想使用正则表达式在括号、算术运算符和数字之间添加一个空格

例如,我想用
(+23)
替换
(+23)

我写了这个正则表达式,但似乎不起作用:

((\(|\))[\d\w +*/-])+

我使用Python替换字符串中的字符。

我想您需要这样的东西

>>> import re
>>> s = "(+ 2 3)"
>>> m = re.sub(r'(?<=\()(?=[-\d+/*])|(?<=[-\d+/*])(?=\))', r' ', s)
>>> m
'( + 2 3 )'
>>重新导入
>>>s=“(+23)”
>>>m=re.sub(r’(?正则表达式:
([(]+)|([)]+)

替换:
\1\2

结果:
(+23)


我不确定您的要求,但这是一个可能的解决方案:

re.sub(r'([()+*/-]|\w+) *', r'\1 ', s)

样本输入:

(+1 3)
(  +  4 (* (/ 6 4)74))
(+ u(- a34    234))
样本输出:

( + 1 3 ) 
( + 4 ( * ( / 6 4 ) 74 ) ) 
( + u ( - a34 234 ) ) 

此解决方案的一个小问题是在末尾添加了一个额外的空格。

1)在
(+2 35)
中,数字是否总是像35这样的一位数或多位数?2)是否可以接受非正则表达式解决方案?多位数和仅正则表达式更好的
(?)?