import re
pattern = re.compile(r"(\d{3})+$")
print pattern.match("123567").groups()
出力結果:私は結果が('123','567')
ある必要Pythonの正規表現ですか?
('567',)
。 (\d{3})
は最後のグループのみを出力できますが、グループごとに出力します。
import re
pattern = re.compile(r"(\d{3})+$")
print pattern.match("123567").groups()
出力結果:私は結果が('123','567')
ある必要Pythonの正規表現ですか?
('567',)
。 (\d{3})
は最後のグループのみを出力できますが、グループごとに出力します。
私はニシキヘビの方法のビットでそれをやっている
ソリューション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))]
S olution 2(一方のライナ)
print(re.sub("(?<=\d)(?=(\d{3})+$)", ",", test_str).split(","))
答えは正しいですが、 'p = re.compile(r '(\ d {3})')'は理解できません。あなたはそれを説明できますか? – lens
はい!しかし、OPは依然として '' 1235678 ''の場合に予想される出力になると答えていません。 – AKS
@ user5673769これはあなたの正規表現で述べたのと同じですが、これは文字列にある3桁の_non-overlapping_の組み合わせがすべて見つかっていることを除いてです – rock321987
.. '+'正規表現からも – rock321987
're.findall( "\ dの{3}"、「123567を' $ 'を削除して")' – ozgur
'$'を削除すると、結果は同じです。 – lens