如何获得一个并不总是存在的捕获组?
我有一个正则表达式像如何获得一个并不总是存在的捕获组?
(\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
。
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):
print regex.group(3)
else:
print "3rd group not found"
else:
print "value don't match regex"
aaah noncapturing group ... tnx:D – NoSenseEtAl 2013-05-13 12:59:50
'{0,1}'通常写成'?' – georg 2013-05-13 13:00:43
@ thg435,是的。 “{0,1}”和“?”是相同的。只是保持它的问题 – stalk 2013-05-13 13:02:17
如果您可以提供一些示例输入和预期的输出字符串,那将是非常有帮助的。 – 2013-05-13 12:50:32