我有一个类似
的正则表达式(\d\d\d)(\d\d\d)(\.\d\d){0,1}
当它匹配时,我可以很容易地得到前两组,但我如何检查第三组是否发生了0或1次。
另一个小问题:在(\.\d\d)
我只关心\d\d
部分,任何其他方式告诉正则表达式\.\d\d
需要出现0或1次,但我想要仅捕获\d\d
部分?
这是基于解析
的问题HHMMSS
字符串,其中包含秒的可选小数部分(因此它变为
hhmmss.ss
)...我在问题中加了\d\d\d
,因此很明显我正在谈论\d\d
。
答案 0 :(得分:14)
import re
value = "123456.33"
regex = re.search("^(\d\d\d)(\d\d\d)(?:\.(\d\d)){0,1}$", value)
if regex:
print regex.group(1)
print regex.group(2)
if regex.group(3) is None:
print regex.group(3)
else:
print "3rd group not found"
else:
print "value don't match regex"