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