2013-03-21 180 views
2

我想使用Ptython中的RegEx匹配提取線性方程的LHS和RHS。Python正則表達式匹配異常

exp="+1-3=x+2"; 
parts = re.search("(.*?)=(.*?)", exp); 
left = parts.group(1); 
right = parts.group(2); 

雖然left值被正確地捕獲的right值爲空。

有什麼我做錯了嗎?不用說我對Python很陌生。

謝謝。

+1

是否必須是正則表達式?怎麼樣'left,right = exp.split('=')'? – georg 2013-03-21 23:36:29

+1

我知道字符串操作方法。我試圖在Python中練習RegEx,所以只想用RegEx來完成。 – mihsathe 2013-03-22 01:38:30

回答

4

使右手邊貪婪通過移除問號:

parts = re.search("(.*?)=(.*)", exp); 

否則匹配=後立即停止。

或者,使用$來錨定到字符串的末尾。

最後,值得注意的是,你實際上並不需要在這裏正則表達式:

left, _, right = exp.partition('=') 
+0

是不是?用來使東西不貪心? – mihsathe 2013-03-21 22:22:30

+0

哦,好的。得到它了。謝謝。 – mihsathe 2013-03-21 22:25:18

+0

@mihsathe:對不起,過了漫長的一天。我已經在答案中解決了措辭。 – NPE 2013-03-21 22:25:27