2013-06-01 30 views
1

我有一個字符串,顯示有多少時間留給:正則表達式匹配可選部分

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

你缺少的格局空間:

之一:

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

或剝去文字

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