[英]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='')
现在,您可以检查netloc
和path
属性。
这是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.