url1='http://.www.youtube.com/watch?v=tKTZoB2Vjuk&index=1&list=PLqmh7e11V6OzWBTSYNq1yYznar709uDQx'
#url2='www.ssa.gov/cgi-bin/popularnames.cgi'
def verify(url):
try:
x=re.search('((^https|http|ftp):)?(/?/?www)\.[a-zA-Z0-9]+\.[a-zA-Z]{2,3}\/[-a-zA-Z0-9?=&%#./]*',url)
print x.group()
except:
print "not valid"
verify(url1)
这个URL不应该是无效的,因为在www之前有一个点吗?你知道吗
我的输出显示:
www.youtube.com/watch?v=tKTZoB2Vjuk&index=1&list=PLqmh7e11V6OzWBTSYNq1yYznar709uDQx
只有
https
被锚定到字符串的开头,协议组被标记为可选。因此,regex将匹配任何包含URI(由regex定义)的文本,只要它不需要以https
开头。你知道吗我建议完全删除
^
,使用re.match
而不是re.search
。你知道吗您的regex还有其他问题,这些问题会阻止它匹配其他完全有效的uri。你知道吗
我们来分解一下你的正则表达式:
从上面,您可以看到协议和斜杠都是可选的,所以您的regex所需要的只是www上的某个地方,而不管开始是什么。你知道吗
相关问题 更多 >
编程相关推荐