正则表达式匹配可选部分

时间:2013-06-01 13:37:43

标签: python regex

我有一个字符串,显示剩余时间:

text = """                9d 15h left <br />
                           some other text not important
                           12h 5m left <br />""" 
pattern = "((\d+)d)?.*left <br />"

我想匹配天数,或者9,但是,如果缺少这些天数,我想匹配一个空字符串。这就是我得到的

>>> re.findall(pattern,text)
[('', ''),('', '')]

但我正在寻找的是

>>> re.findall(pattern,text)
[('9d', '9'),('', '')]

1 个答案:

答案 0 :(得分:1)

你错过了模式中的空格:

或者:

re.search(r"[ ]+((\d+)d)?.*left <br />", text).groups()

或删除

之前的文本
re.search(r"((\d+)d)?.*left <br />", text.strip()).groups()