在python中的一个re.compile语句中排除/包含字符串以提取感兴趣的URL [关闭]

问题描述 投票:-1回答:1

所以我试图获取包含特定字符串的网址,同时避免包含错误字符串的网址。

所以我不希望任何包含字符串“/ inventory / all /”的网址,我只想要包含字符串“/ inventoryories /”或“/ inventory / 2017 /”的网址

所以我设法至少排除了包含“/ inventory / all /”字符串的网址:

get_urls = soup.findAll('a', href=re.compile('^(?!.*/inventory/all/).*$'))

但是当我尝试包含我想要的字符串时,它就不再有效了,我试过:

get_urls = soup.findAll('a', href=re.compile('^(?!.*/inventory/all/).*$'|/inventories/|/inventory/2017/'))

谢谢你的帮助,我是新手

python regex beautifulsoup
1个回答
1
投票

你可以使用以下正则表达式:

^(?=.*inventor(?:ies|y/2017))^(?:(?!inventory/all).)+$
  • ^(?=.*inventor(?:ies|y/2017))这是一个展望未来,确保我们只是寻找inventoriesinventory/2017的字符串。对于较少的回溯,你需要锚定它,即^,它表明匹配应该从句子的开头开始。因此,只做^.*inventor(?:ies|y/2017).*$就足够了,因为所选择的只有两个。
  • ^(?:(?!inventory/all).)+$这部分是一个负向前看,断言从字符串的开头到字符串的结尾没有inverntory/all。我添加了这个部分,以防您找到格式为inventoy/2017/inventory/all的字符串。这将被删除。
© www.soinside.com 2019 - 2024. All rights reserved.