Python中URL的正则表达式

时间:2016-02-09 08:21:40

标签: python regex

我有以下网址

content/test
content/contact
products/
products/96_product/
products/96_product/86000_productdescription1
products/96_product/86343_productdescription3
products/96_product/76002_productdescription4
products/96_product/100222_productdescription5
products/100_product233/86303_productdescription1
products/100_product233/844543_productdescription3
products/100_product233/73442_productdescription4
products/100_product233/103434_productdescription5

我需要获得产品说明。数字可以是5或6位数。如何制定正则表达式以在列表中获取产品说明?

3 个答案:

答案 0 :(得分:1)

您只需使用str.split()分割'_',然后选择最后一部分:

descriptions = []
for url in urls:
    parts = url.split("_")
    if len(parts) == 3:
        descriptions.append(parts[-1])

对于更复杂的情况,您可以使用这样的正则表达式:

import re
regex = re.compile(r"products/.*/\d{5,6}_(.*)")
descriptions = []
for url in urls:
    match = regex.match(url)
    if match:
        descriptions.append(match.group(1))

答案 1 :(得分:1)

您可以执行以下操作:

[re.search('product\/([0-9]{5,6})_productdescription', s).group(1) 
 if re.search('product\/([0-9]{5,6})_productdescription', s)
 else '' 
 for s in urls]

答案 2 :(得分:0)

正则表达式

^.*\d{5,6}_([^\/])*$

解释 ^开始 .*任何事情 \d{5,6}五六位数 _强调 ()将此保存在结果中 [^\/]*任何不是斜线的东西 $结束

https://docs.python.org/2/library/re.html python正则表达式引用 http://tartley.com/?p=1349正则表达式pdf cheatsheet