2015-06-21 20 views
0

我試圖通過Python的re模塊來匹配這兩種模式的正則表達式:正則表達式/

"GET /images/launch-logo.gif HTTP/1.0" 
"GET/HTTP/1.0 " 

我嘗試下面的表達式:

"(\S+) (\S.*?)\s*(\S*)" 

這並不如預期返回以下內容:

1. GET 
2. /images/launch-logo.gif 
3. HTTP/1.0 

但是,對於第二個返回:

1. GET 
2./HTTP/1.0 
3. '' 

相反,我想,要返回以下內容:

1. GET 
2./
3. HTTP/1.0 

另外還有一點需要刪除尾隨的空間。有人能用正確的正則表達式來幫助我嗎?

+0

剛剛在空間分裂怎麼樣? – chris85

+0

這是一個較長的正則表達式的一部分...不能真正使用其他任何東西 – Ravi

回答

2

這裏您不需要使用不情願量詞(*?)。用途:

(\S+)\s+(\S+)\s+(\S+)\s* 

與你原來的正則表達式的問題是.*?\s*的組合,因爲不願意表達能夠保持匹配,而\s*不必匹配任何。

+0

這適用於第一種情況,但不適用於第二種情況 – Ravi

+0

@Ravi正則表達式是正確的。請參閱https://regex101.com/ r/vH0iN5/7 – vks

+0

爲末尾的空格添加了附加的'\ s *' – beerbajay