在python可选中创建正则表达式匹配的一部分

时间:2017-10-05 23:36:35

标签: python regex match

我正在尝试使用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

我确信有一个简单的解决方案,但我不知道如何解决这个问题。

1 个答案:

答案 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?&=/?_]+)?$'