如何在python中验证LinkedIn公共配置文件url正则表达式

时间:2015-05-15 10:16:52

标签: python regex

我想要验证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 意味着它无效。任何人都可以帮我验证这两个概念。

3 个答案:

答案 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='')

现在,您可以检查netlocpath属性。

答案 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<]')