用Regex替换两个不同的字符

时间:2014-10-05 17:13:26

标签: python regex

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

例如,我想将(+ 2 3)替换为( + 2 3 )

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

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

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

3 个答案:

答案 0 :(得分:1)

正则表达式:([(]+)|([)]+)

替换:\1 \2

结果:( + 2 3 )

Live Preview here

答案 1 :(得分:0)

我想你想要这样的东西,

>>> import re
>>> s = "(+ 2 3)"
>>> m = re.sub(r'(?<=\()(?=[-\d+/*])|(?<=[-\d+/*])(?=\))', r' ', s)
>>> m
'( + 2 3 )'

答案 2 :(得分:0)

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

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

DEMO

示例输入:

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

示例输出:

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

此解决方案的一个小问题是最后添加了额外的空间。