使用 re.findall 提取 URL 末尾的 id


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

我希望sfdc_partnerid返回"a0n82000006VlNaPPP"

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

给定您的网址,要使用的正确正则表达式是:

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

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

例如

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

最新更新