用正则表达式替换两个不同的字符
问题描述:
我想用正则表达式在圆括号和算术运算符和数字之间加一个空格。用正则表达式替换两个不同的字符
例如,我想(+ 2 3)
我写这个正则表达式替换(+ 2 3)
,但似乎并没有工作:
((\(|\))[\d\w +*/-])+
我使用Python来替换字符串中的字符。
答
我想你想这样的事情,
>>> import re
>>> s = "(+ 2 3)"
>>> m = re.sub(r'(?<=\()(?=[-\d+/*])|(?<=[-\d+/*])(?=\))', r' ', s)
>>> m
'(+ 2 3)'
+0
更好'(? NaN 2014-10-05 18:41:03
答
我不知道你的要求,但是这是一个可能的解决方案:
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)是否是可接受的非正则表达式解决方案? – kums 2014-10-05 18:15:26
只有多位和正则表达式 – NaN 2014-10-05 18:43:54