为什么在这个组中捕获逗号?

时间:2014-09-24 21:44:01

标签: python regex

我想编写一个python正则表达式来匹配一个字符串中的数字,该字符串由一个数字后跟一个逗号组成。例如,我想在34中匹配34,。但是,我正在使用的正则表达式将逗号与数字匹配:

>>> import re
>>> r = r'^(\d+),?$'
>>> re.match(r, '123,').group(0)
'123,' 

当我从捕获组中排除逗号时,为什么python与逗号匹配?

1 个答案:

答案 0 :(得分:5)

组0是整个正则表达式 - 它将包含正则表达式匹配的整个字符串。捕获组[用()表示]从1开始编号。

要仅提取数字,您只需使用group(1)

即可
>>> import re
>>> r = r'^(\d+),?$'
>>> re.match(r, '123,').group(1)
'123'

有关分组的详细信息,请参阅official documentation