Используйте re.findall для извлечения идентификатора в конце URL - PullRequest
0 голосов
/ 17 января 2019
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 голосов
/ 17 января 2019

Вы также можете посмотреть urllib.parse , если вы используете python3

, например

from urllib import urlparse
result = urlparse("https://unify.my.salesforce.com/a0n82000006VlNaPPP")
result.path
0 голосов
/ 17 января 2019

Учитывая ваш URL, правильное регулярное выражение для работы будет:

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

Речь идет о квантификаторах: *? - это ленивый квантификатор, который соответствует как можно меньшему числу символов

(.*?) фактически означает «сопоставить что-либо между нулем и неограниченным как можно меньше раз», что является пустым.

Добавление ? после этого означает «ноль или один из предыдущих соответствий», так что: (.*?)? фактически означает «ноль или один из ничего» * ​​1015 *

Я не уверен насчет остальных sr в вашем исходном регулярном выражении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...