2016-04-29 222 views
1
import re 
pattern = re.compile(r"(\d{3})+$") 
print pattern.match("123567").groups() 

輸出結果:Python的正則表達式?

('567',) 

我需要的結果是('123','567')(\d{3})只能輸出最後一組,但我想輸出每一組。

+0

刪除'$'和也'+'從正則表達式.. – rock321987

+0

're.findall( 「\ d {3}」,「123567 「)' – ozgur

+0

當我刪除'$'時,結果是一樣的。 – lens

回答

2

我做它一點點Python的方式

解決方案1 ​​

Python代碼

p = re.compile(r'(?<=\d)(?=(?:\d{3})+$)') 
test_str = "2890191245" 
tmp = [x.start() for x in re.finditer(p, test_str)] 
res = [test_str[0: tmp[0]]] + [(test_str[tmp[i]: tmp[i] + 3]) for i in range(len(tmp))] 

Ideone Demo

小號olution 2(一個襯墊)

print(re.sub("(?<=\d)(?=(\d{3})+$)", ",", test_str).split(",")) 

Ideone Demo

+0

答案是對的,但我不明白'p = re.compile(r'(\ d {3})')'。你能解釋一下嗎? – lens

+0

是的!然而,OP仍未回答「1235678」情況下的預期輸出。 – AKS

+0

@ user5673769它與你在正則表達式中提到的相同,除了這是找到字符串中存在的三個數字的所有_non-overlapping_組合 – rock321987