import re
pattern = re.compile(r"(\d{3})+$")
print pattern.match("123567").groups()
輸出結果:Python的正則表達式?
('567',)
我需要的結果是('123','567')
。 (\d{3})
只能輸出最後一組,但我想輸出每一組。
import re
pattern = re.compile(r"(\d{3})+$")
print pattern.match("123567").groups()
輸出結果:Python的正則表達式?
('567',)
我需要的結果是('123','567')
。 (\d{3})
只能輸出最後一組,但我想輸出每一組。
我做它一點點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))]
小號olution 2(一個襯墊)
print(re.sub("(?<=\d)(?=(\d{3})+$)", ",", test_str).split(","))
答案是對的,但我不明白'p = re.compile(r'(\ d {3})')'。你能解釋一下嗎? – lens
是的!然而,OP仍未回答「1235678」情況下的預期輸出。 – AKS
@ user5673769它與你在正則表達式中提到的相同,除了這是找到字符串中存在的三個數字的所有_non-overlapping_組合 – rock321987
刪除'$'和也'+'從正則表達式.. – rock321987
're.findall( 「\ d {3}」,「123567 「)' – ozgur
當我刪除'$'時,結果是一樣的。 – lens