You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则表达式疑问:为何分组捕获结果为'c'?

为啥你的正则分组捕获到的是'c'?

嘿,我来给你把这个事儿说透!你写的正则([abc])+里藏着一个很容易踩的小坑,咱们一步步拆解:

  • 首先看正则结构:([abc])是一个捕获组,匹配a、b、c里的任意单个字符;后面的+表示这个捕获组要重复匹配1次或多次。
  • 当匹配字符串"abc"时,这个捕获组会依次工作:
    1. 第一次匹配到'a',此时捕获组1的内容是'a';
    2. 第二次匹配到'b',这时候捕获组1的内容会被覆盖成'b';
    3. 第三次匹配到'c',捕获组1的内容又被覆盖成'c'。
  • 正则引擎的规则就是这样:当捕获组被重复修饰符(比如+、*、{n,})作用时,捕获组只会保留最后一次匹配的结果,前面的都会被覆盖掉。

所以最后m.groups()返回('c',),m.group(1)拿到'c'就完全说得通啦。

如果想把所有匹配的字符都捕获到,其实可以换个写法,比如用re.findall("[abc]", "abc"),它会返回['a', 'b', 'c'],直接拿到所有符合条件的字符~

内容的提问来源于stack exchange,提问作者setu shwetank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:55:50