Python的正则表达式?
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