簡體   English   中英

用正則表達式替換兩個不同的字符

[英]Replace two different characters with Regex

我想使用Regex在括號與算術運算符和數字之間添加一個空格。

例如,我想將(+ 2 3)替換為( + 2 3 )

我寫了這個正則表達式,但似乎不起作用:

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

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

正則表達式: ([(]+)|([)]+)

替代: \\1 \\2

結果: ( + 2 3 )

現場預覽

我想你想要這樣的東西

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

我不確定您的要求,但這是可能的解決方案:

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

此解決方案的輕微問題是,最后增加了額外的空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM