2013-07-25 19 views
0

我目前使用正則表達式匹配一定行的,如:創建與正則表達式匹配在Python

(.0025 = 625 dollars per contract) 

我有我使用了類似的表達,是能夠完成任務正則表達式。但是,我想知道是否有它更好地實施:

new_string = re.search(r'.*?\([^$]*?([\$|\d][^)]* per contract)\)', cell) 

我知道我可以改變地步,尋找一個美元符號,但任何其他的東西?

如果你還可以解釋你的正則表達式,這將是有益的。

+4

如果你想要一些(有用)的幫助下,你必須精確你正在尋找解釋。例如:「美元」這個詞總是存在,你最終的目標是什麼,你想要提取什麼。 –

回答

1

如果你總是要收集的價格,你可以這樣做:

regex_string = r'= (.*? per contract)' 

這捕獲:

'625 dollars per contract' 

它所做的就是採取和空間等號之間的任何東西(後)和「每份合同」。由於你的正則表達式假定「每份合同」這個詞總是存在,我的也一樣。

如果你只是想要的價格,你可以這樣做,而不是:

>>>regex_string = r'= (.*?) per contract' 
>>>matchobj = re.search(regex_string, "(.0025 = 625 dollars per contract)") 
>>>matchobj.groups() 
('625 dollars',)