【问题标题】:How to group a regular expression in re.split() function?如何在 re.split() 函数中对正则表达式进行分组?
【发布时间】:2012-02-21 08:11:51
【问题描述】:

看两个例子 re.split() 是如何工作的:

>>> re.split(',', 'a,b')
['a', 'b']

但是

>>> re.split('(,)', 'a,b')
['a', ',', 'b']

为什么我在列表中得到“,”?如何避免?

我在问,因为我想使用类似于 'xy(a|b)cd' 的表达式进行拆分。

【问题讨论】:

    标签: python regex split


    【解决方案1】:

    使用非捕获组,例如:

    re.split('(?:,)', 'a,b')
    

    【讨论】:

    • 谢谢。它有效(我仍然不明白为什么正常的括号会导致列表中的“,”)。
    • @cauchy,因为捕获组(括号)捕获其内容(根据定义,作为每个捕获组和拆分匹配的元素包含在拆分结果中)。
    • 如果我想在我的 split() 模式中使用反向引用,我是 SOL?
    【解决方案2】:

    之所以如此,是因为它是documented to work that way

    如果pattern中使用了捕获括号,那么中所有组的文本 该模式也作为结果列表的一部分返回。

    【讨论】:

      猜你喜欢
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多