【问题标题】:Why won't re.groups() give me anything for my one correctly-matched group?为什么 re.groups() 不为我的一个正确匹配的组提供任何东西?
【发布时间】:2011-11-10 20:08:30
【问题描述】:

当我运行这段代码时:

print re.search(r'1', '1').groups() 

我得到() 的结果。但是,.group(0) 给了我匹配。

不应该groups()给我一些包含匹配的东西吗?

更新:感谢您的回答。所以这意味着如果我在没有子组的情况下使用re.search(),我必须使用groups(0) 来获得匹配?

【问题讨论】:

    标签: python regex object match capture-group


    【解决方案1】:

    据我所知,.groups() 返回一个由记住的组组成的元组。 IE。正则表达式中括在括号中的那些组。所以如果你要写:

    print re.search(r'(1)', '1').groups()
    

    你会得到

    ('1',)
    

    作为您的回应。一般情况下,.groups() 将返回正则表达式中括号内的所有对象组的元组。

    【讨论】:

      【解决方案2】:

      groups 为空,因为您没有任何捕获组 - http://docs.python.org/library/re.html#re.MatchObject.groups。 group(0) 将始终返回匹配的整个文本,无论它是否被捕获在一个组中

      已编辑。

      【讨论】:

      • 这是groups字段,不是方法
      【解决方案3】:

      您的正则表达式中没有组,因此您会得到一个空列表 (())。

      试试

      re.search(r'(1)', '1').groups()
      

      使用括号创建捕获组,匹配这部分模式的结果存储在组中。

      然后你得到

      ('1',)
      

      结果。

      【讨论】:

        【解决方案4】:

        原因是您没有捕获组(因为您没有在模式中使用())。 http://docs.python.org/library/re.html#re.MatchObject.groups

        group(0) 返回整个搜索结果(即使它根本没有捕获组): http://docs.python.org/library/re.html#re.MatchObject.group

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-11
          相关资源
          最近更新 更多