繁体   English   中英

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

[英]How to validate LinkedIn public profile url regular expression in python

我想验证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时 ,它就无法正常工作。 谁能帮助我验证两个概念。

这种模式可能会有所帮助。

^((http|https):\/\/)?+(www.linkedin.com\/)+[a-z]+(\/)+[a-zA-Z0-9-]{5,30}+$

我已经测试过了,对我来说效果很好。

可以使用urllib模块来代替将url与正则表达式匹配:

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属性。

这是http和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<]')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM