我正在尝试使用re
匹配某个网址但是在使该部分匹配成为可选方面遇到了麻烦。
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/?loc=shop_view_item&item=220503032
我想更改正则表达式以进行以下操作,[A-Za-z0-9?&=/?_]+
一个选项 - 因此,不需要斜杠之后的任何内容,因此以下内容应匹配:
https://iskis.com
我确信有一个简单的解决方案,但我不知道如何解决这个问题。
答案 0 :(得分: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?&=/?_]+)?$'