python - 具有多个匹配项的正则表达式组捕获

标签 python regex

快速正则表达式问题。
我试图在 python 中捕获一个捕获组的多个实例(不要认为它是特定于 python 的),但随后的捕获似乎覆盖了之前的捕获。

在这个过度简化的示例中,我实际上是在尝试拆分一个字符串:

x = 'abcdef'
r = re.compile('(\w){6}')
m = r.match(x)
m.groups()     # = ('f',) ?!?
我想获取 ('a', 'b', 'c', 'd', 'e', 'f'),但是因为正则表达式会覆盖后续捕获,所以我得到 ( 'f',)

这就是正则表达式的行为方式吗?有没有一种方法可以做我想做的事而不必重复语法六次?

提前致谢!
安德鲁

最佳答案

恐怕你不能为此使用群组。每个组只能匹配一次,我相信所有的正则表达式都是这样工作的。一种可能的解决方案是尝试使用 findall() 或类似方法。

r=re.compile(r'\w')
r.findall(x)
# 'a', 'b', 'c', 'd', 'e', 'f'

关于python - 具有多个匹配项的正则表达式组捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5598340/

相关文章:

python - 嵌套字典的类对象属性访问

python - 从python中的UUID v1中提取时间

java - 处理大量输入数据时出现 StackOverflow 错误

regex - 如何使用 sed 正确注释和取消注释 fstab?

python - Kivy 将按钮文本复制到剪贴板

理解 pcap-ng 格式的 Python libpcap 包装器?

java - 字幕的正则表达式

python - 将方法作为函数参数传递

python - 将二维多项式系数附加到 Python 中的项的更快方法?

ios - 检查坐标有效性 - UITextField - iOS