2016-08-17 82 views
-2

我很新的正則表達式,我試圖找到實例在存在既包括信we其次是2個位數的字一個字符串,如e77w10等。插入空間的正則表達式

下面是我目前擁有的正則表達式,我覺得發現(糾正我,如果我錯了)

([e|w])\d{0,2}(\.\d{1,2})?

我怎麼能信ew之後添加一個空格?如果沒有符合條件的實例,我想保留字符串。我需要使用re.sub嗎?我讀過一些關於這個的內容。

輸入:hello e77 world

所需的輸出:hello e 77 world

謝謝。

+0

你沒有*測試*你的正則表達式嗎?因爲它實際上並沒有在你的輸入中找到'e77'。 –

+0

嘗試在這裏測試你的正則表達式https://regex101.com/#python – mkaran

+0

@WayneWerner我認爲這是找到它,不是嗎? http://regexr.com/3e1j5然而,我知道它並不完全準確,因爲它也匹配所有的e/w。 – hl95

回答

5

你的正則表達式需要只是看起來像這樣:

([ew])(\d{2}) 
如果你想只匹配特別是2位數

,或者

([ew])(\d{1,2}) 

,如果你也想匹配像e4

個位數

括號稱爲捕獲組,可以在搜索和替換中反向引用,或使用python,使用re.sub

您的替換字符串應該像

\1 \2 

所以應該像一條線一樣簡單:

re.sub(r'([ew])(\d{1,2})', r'\1 \2', your_string) 

編輯:工作代碼

>>> import re 
>>> your_string = 'hello e77 world' 
>>> 
>>> re.sub(r'([ew])(\d{1,2})', r'\1 \2', your_string) 
'hello e 77 world' 
1

這就是你'之後:

import re 

print(re.sub(r'([ew])(\d{1,2})', r'\g<1> \g<2>', 'hello e77 world'))