我想用正則表達式在圓括號和算術運算符和數字之間加一個空格。用正則表達式替換兩個不同的字符
例如,我想(+ 2 3)
我寫這個正則表達式替換(+ 2 3)
,但似乎並沒有工作:
((\(|\))[\d\w +*/-])+
我使用Python來替換字符串中的字符。
我想用正則表達式在圓括號和算術運算符和數字之間加一個空格。用正則表達式替換兩個不同的字符
例如,我想(+ 2 3)
我寫這個正則表達式替換(+ 2 3)
,但似乎並沒有工作:
((\(|\))[\d\w +*/-])+
我使用Python來替換字符串中的字符。
我想你想這樣的事情,
>>> import re
>>> s = "(+ 2 3)"
>>> m = re.sub(r'(?<=\()(?=[-\d+/*])|(?<=[-\d+/*])(?=\))', r' ', s)
>>> m
'(+ 2 3)'
更好'(?<= \()(?= [ - \ d +/*])|(?<= [ - \ d +/*)])(?= \ – 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