【问题标题】:What is the meaning of "Empty matches are included in the result."?“结果中包含空匹配项”是什么意思?
【发布时间】:2019-09-30 12:18:12
【问题描述】:

我指的是re.findall函数的文档:

“结果中包含空匹配”是什么意思。

【问题讨论】:

    标签: python python-re


    【解决方案1】:

    当您使用匹配空字符串的组时会发生这种情况,例如:

     print(re.findall(r'(\w)(\d?)(\w)', "bc"))
    

    输出:

    [('b', '', 'c')]
    

    此处组 (\d?) 匹配 '' 并包含在结果中。

    【讨论】:

    • 空组不等于空匹配。 (\w)|(\d) 不会产生任何空匹配项。
    • @Aran-Fey 感谢您的更正,实际上它与'' 匹配,但为什么它会产生两个元素?
    • 好的,这里的空指的是空的分组
    • 是的,如果您有n 捕获组,列表中的每个元组都将包含n 元素,其顺序与组相同。
    【解决方案2】:

    这只是意味着当匹配是“”或空字符串时,它会包含在结果列表中。

    【讨论】:

      【解决方案3】:

      零长度匹配,或空匹配。

      正则表达式由边界定义或锚点组成,例如运算符^。一旦锚点被击中,你就有了一个匹配,它可以是“空的”,紧随其后的是另一个锚点。

      【讨论】:

        【解决方案4】:

        如果主题是空字符串,则 fullmatch() 对任何可以找到...的正则表达式计算为 True 整个正则表达式匹配不包含在元组中,除非您将整个 ... 出现在常规表达式,因为原始字符串不提供转义它的方法。

        【讨论】:

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