我想编写一个python正则表达式来匹配一个字符串中的数字,该字符串由一个数字后跟一个逗号组成。例如,我想在34
中匹配34,
。但是,我正在使用的正则表达式将逗号与数字匹配:
>>> import re
>>> r = r'^(\d+),?$'
>>> re.match(r, '123,').group(0)
'123,'
当我从捕获组中排除逗号时,为什么python与逗号匹配?
答案 0 :(得分:5)
组0是整个正则表达式 - 它将包含正则表达式匹配的整个字符串。捕获组[用(
和)
表示]从1开始编号。
要仅提取数字,您只需使用group(1)
:
>>> import re
>>> r = r'^(\d+),?$'
>>> re.match(r, '123,').group(1)
'123'
有关分组的详细信息,请参阅official documentation。