为什么Python re.sub捕获不是零索引?

时间:2016-06-28 12:51:31

标签: python regex

当捕获下面显示的Boiler1时,它们会被引用为\ 1和\ 2。我花了一些时间来弄清楚为什么这不起作用,因为我预计捕获组将被归零。为什么捕获组不是零索引,而不像Python中的几乎所有内容一样?

string = "BoilerRoom_Boiler_Booster_On"
re.sub('(Boiler)_(\d)', r'\1-\2', string)

Out[21]:
'BoilerRoom_Boiler-1_Booster_On'

2 个答案:

答案 0 :(得分:2)

因为the docs说:

  

组从0开始编号。组0始终存在;这是整个RE

到目前为止为什么他们选择这样做,我猜它早于Python的re模块的Unix工具已经这样做了。

答案 1 :(得分:1)

它是零索引,因为group 0代表整个匹配组。