2017-10-05 19 views
0

中構成正則表達式匹配的一部分我試圖使用re來匹配一個URL,但是在使匹配的一部分可選方面遇到麻煩。斜線ISN後這樣,什麼」 -在Python可選

https://iskis.com/?loc=shop_view_item&item=220503032 

我想改變正則表達式來進行以下[A-Za-z0-9?&=/?_]+一個選項:

import re 

x = raw_input('Link: ') 
reg = '(http|https)://(iski|www\.iskis|iskis)\.(in|com)/[A-Za-z0-9?&=/?_]+' 
if re.match(reg, x): 
    print 'True' 

目前,上面的代碼將匹配像牛逼需要,所以下面應該匹配:

https://iskis.com 

我敢肯定有一個簡單的解決方案,但我不知道如何去解決這個。

回答

1
reg = '(http|https)://(iski|www\.iskis|iskis)\.(in|com)(/[A-Za-z0-9?&=/?_]+)?$' 

應該這樣做。用()環繞字符類,所以它是一個組,在它之後放置一個?以使該文本匹配該組的0-1個實例,並且在末尾放置$,以便正則表達式匹配到結尾。

編輯:

試想想起來了,你可以在你的正則表達式的其他地方使用可選的比賽。

reg = '(https?)://(www\.)?(iskis?)\.(in|com)(/[A-Za-z0-9?&=/?_]+)?$'