我想要验证linkedin公开个人资料网址。我尝试了下面的概念
a = "https://in.linkedin.com/afadasdf"
p = re.compile('(http(s?)://|[a-zA-Z0-9\-]+\.|[linkedin])[linkedin/~\-]+\.[a-zA-Z0-9/~\-_,&=\?\.;]+[^\.,\s<]')
p.match(a)
上述概念运作良好。但是当我给出网址 https://www.linkedin.com 意味着它无效。任何人都可以帮我验证这两个概念。
答案 0 :(得分:1)
这种模式可能有所帮助。
with open("highscore.txt", "a") as c:
c.write('Highscore: %s\n' % name)
我测试了它,它对我来说很好。
答案 1 :(得分:0)
您可以使用urllib
模块:
In [1]: import urllib
In [2]: u = "https://in.linkedin.com/afadasdf"
In [3]: urllib.parse.urlparse(u)
Out[3]: ParseResult(scheme='https', netloc='in.linkedin.com', path='/afadasdf', params='', query='', fragment='')
现在,您可以检查netloc
和path
属性。
答案 2 :(得分:0)
这是http(s)和www之间的关系。这给了你上面的问题。您可以将它们更改为*(即0或更多)。
import re
a = "https://www.linkedin.com/afadasdf"
p = re.compile('((http(s?)://)*([a-zA-Z0-9\-])*\.|[linkedin])[linkedin/~\-]+\.[a-zA-Z0-9/~\-_,&=\?\.;]+[^\.,\s<]')
print p.match(a)
虽然您可能希望将其限制为www而不是任何数字或字母?也许吧:
p = re.compile('((http(s?)://)*([www])*\.|[linkedin])[linkedin/~\-]+\.[a-zA-Z0-9/~\-_,&=\?\.;]+[^\.,\s<]')