2014-10-05 89 views
0

我想用正則表達式在圓括號和算術運算符和數字之間加一個空格。用正則表達式替換兩個不同的字符

例如,我想(+ 2 3)

我寫這個正則表達式替換(+ 2 3),但似乎並沒有工作:

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

我使用Python來替換字符串中的字符。

+0

1)數字總是單數位還是多位數字,例如'(+ 2 35)'中的35可能? 2)是否是可接受的非正則表達式解決方案? – kums 2014-10-05 18:15:26

+0

只有多位和正則表達式 – NaN 2014-10-05 18:43:54

回答

0

我想你想這樣的事情,

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

更好'(?<= \()(?= [ - \ d +/*])|(?<= [ - \ d +/*)])(?= \ – NaN 2014-10-05 18:41:03

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)) 

的這個解決方案的一個小問題是最後增加了額外的空間。