如何使用Python正则表达式从字符串中提取多个模式?

2024-09-29 22:01:12 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有数百万这样的网址,我想从中提取两件事

  1. 产品名称:前面总是https://epolicy.companyname.co.in

  2. *.aspx:访问的页面

我尝试了以下正则表达式

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

以及它的一些变体。但没用。正确的方法是什么


Tags: inhttpsuisourcedisplaymediumutmco
2条回答

试试这个

代码:

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')]  

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

相关问题 更多 >

    热门问题