使用re.findall在网址末尾提取ID

时间:2019-01-16 22:18:41

标签: python regex

sfdc_url= 'https://unify.my.salesforce.com/a0n82000006VlNaPPP'

sfdc_partnerid= re.findall(r'https://unify.my.salesforce.com/(.*?)?sr',sfdc_url)

我希望sfdc_partnerid返回“ a0n82000006VlNaPPP”

我不断得到空的[]结果。

2 个答案:

答案 0 :(得分:0)

给出您的网址,可以使用的正确正则表达式为:

sfdc_url= 'https://unify.my.salesforce.com/a0n82000006VlNaPPP'
sfdc_partnerid = re.findall(r'https://unify.my.salesforce.com/(.*)', sfdc_url)
print sfdc_partnerid

也在https://eval.in/1078060上进行检查

关于量词: *?是一个懒惰的量词,并且匹配尽可能少的字符

(.*?)的有效含义是“将零到无限之间的任何内容匹配到尽可能少的次数”,该值为空。

在此之后添加?表示“零或前一个匹配项”,因此: (.*?)?实际上表示“零或一无所有”

我不确定原始正则表达式中剩余的sr

答案 1 :(得分:0)

如果您使用的是python3,也可以查看urllib.parse

例如

from urllib import urlparse
result = urlparse("https://unify.my.salesforce.com/a0n82000006VlNaPPP")
result.path