正则表达式在捕获时重复如何精简?

2017 年 8 月 7 日
 Sanko
 import re
 s = 'a12a34a56a78 ‘
 reg1 = r'a(\d+)a(\d+)a(\d+)a(\d+)'
 reg2 = r'(?:a(\d+)){4}'    #我的错误示范

假如 reg1 重复 n 次,如何将 reg1 改成 reg2 的形式还能正常的捕获?我这样写 reg2 只能捕获 78 求大神不吝赐教,刚入正则坑

3048 次点击
所在节点    正则表达式
9 条回复
shoaly
2017 年 8 月 7 日
真要是这种有规律的东西 , 用循环加字符串切割吧
sxm
2017 年 8 月 7 日
(a(\d+))+
L2AKnG8GXx60bc6P
2017 年 8 月 7 日
you need regex
L2AKnG8GXx60bc6P
2017 年 8 月 7 日
i mean
import regex as re
momocraft
2017 年 8 月 7 日
ruby 中這個操作叫 scan. 你可以看看 py 有沒有類似的
Sanko
2017 年 8 月 7 日
@relic regex 不是 re 模块?
Sanko
2017 年 8 月 7 日
@sxm 这样只能捕获最后一个数字啊
inflationaaron
2017 年 8 月 8 日
没办法,与其用 regex 不如` split('a')`
code42
2017 年 8 月 20 日
re.findall(r'a(\d+)', 'a12a34a56a78')

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/381162

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX