问题描述
我想使用python re来匹配这种输入:12、13、45、23。
输入由四个非负整数组合,并用“,”分隔。
但是,我的不匹配...
print re.match(u'^([1?9]\d*|0),([1?9]\d*|0),([1?9]\d*|0),([1?9]\d*|0)$',u"0,1001,13,2")
#output is None
但是,下一次重试效果很好。
print re.match(u'^([1?9]\d*|0),([1?9]\d*|0),([1?9]\d*|0)$',u"0,1001,13")
#<_sre.SRE_Match object at 0x024151B0>
我很困惑。
1楼
为此,您无需重复与每个整数匹配的正则表达式,可以使用{x}
,其中x
是它应该出现的次数,例如:
import re
matcher = re.compile(u"([1-9]\d*|0)(,([1-9]\d*|0)){3}$")
print matcher.match(u"12,45")
# None
print matcher.match(u"0,1001,13,578")
# <_sre.SRE_Match object at 0x7fb0e911ca48>