Как извлечь из строки более одного шаблона, используя регулярные выражения Python? - PullRequest
0 голосов
/ 14 марта 2019

https://epolicy.companyname.co.in/PRODUCTNAME/UI/PremiumCalculation.aspx?utm_source=rtb&utm_medium=display&utm_campaign=dbmew-Category-pros&dclid=CO2g3u7Gy98CFUOgaAodUv4E0w

У меня есть миллионы таких URL, и я хочу извлечь из этого две вещи.

  1. PRODUCTNAME: всегда предшествует https://epolicy.companyname.co.in

  2. *. Aspx: доступ к странице

Я попробовал следующее регулярное выражение

re.findall('([a-zA-Z]+\.aspx | https://epolicy\.companyname\.co\.in/(.*?)/UI)', URL)

и несколько его вариантов. Но это не сработало. Какой это правильный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Попробуйте!

Код:

import re
url = "https://epolicy.companyname.co.in/PRODUCTNAME/UI/PremiumCalculation.aspx?utm_source=rtb&utm_medium=display&utm_campaign=dbmew-Category-pros&dclid=CO2g3u7Gy98CFUOgaAodUv4E0w"
print(re.findall('https://[^/]*/(.*)/UI/(.*).aspx', url))

Выход:

[('PRODUCTNAME', 'PremiumCalculation')]  
0 голосов
/ 14 марта 2019

Regex не совсем подходит для использования здесь.Вместо этого проанализируйте URL, разделите путь и получите первый и последний элементы.

from urllib.parse import urlparse
from pathlib import PurePath

components = urlparse(url)
path = PurePath(url.path)
product_name = path.parts[1]
page = path.stem
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...