19

我有一个类似的正则表达式

(\d\d\d)(\d\d\d)(\.\d\d){0,1}

当它匹配时,我可以轻松获得前两组,但是如何检查第三组是否出现 0 次或 1 次。

还有另一个小问题:在(\.\d\d)我只关心\d\d部分中,还有其他方式告诉正则表达式\.\d\d 需要出现 0 次或 1 次,但我只想捕获\d\d部分吗?

这是基于解析

嗯嗯

具有可选小数部分秒的字符串(所以它变成

hhmmss.ss

)...我提出\d\d\d了这个问题,所以很清楚\d\d我在说什么。

4

1 回答 1

19
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 not None:
        print regex.group(3)
    else:
        print "3rd group not found"
else:
    print "value don't match regex"
于 2013-05-13T12:51:49.950 回答