2013-07-31 66 views
1

我試圖從看起來像一個字符串獲取名稱和編號:正則表達式沒有得到所有的數字

string = '><span>Name</span></p><div class="info"><span>100 years old<' 

的事情,下面的模式是沒有得到的所有數字:

re.findall('<span>([a-zA-Z]+)</span>(.*)([0-9]+)',string) 

相反,它返回從組號碼的最後數字(從上面的例子「0」)

[('Name','</p><div class="info"><span>10','0')] 

我希望它漚甕[('Name','</p><div class="info"><span>','100')]


我知道我可以做以下工作。

re.findall('<span>([a-zA-Z]+)</span>(.*)>([0-9]+)',string) 

但是,爲什麼沒有得到所有數字的正則表達式的第一?

+1

什麼,[again](http://stackoverflow.com/a/1732454/395321)? – pillmuncher

回答

3

.*greedy默認 - 改變該選擇器.*?導致非貪婪匹配: 「」

>>> re.findall('<span>([a-zA-Z]+)</span>(.*?)([0-9]+)',string) 
[('Name', '</p><div class="info"><span>', '100')] 
1

由於正在獲得一些數字。

你可以試試這個instread

「([A-ZA-Z] +)(\\ d *)([\\ d] +)」

注:我不知道你需要轉義「\」。

相關問題