因此,我正在尝试获取包含特定字符串的url,同时也避免使用包含错误字符串的url。
因此,我不希望任何包含字符串“ / inventory / all /”的网址,而只希望包含字符串“ / inventory /”或“ / 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/'))
感谢您的帮助,我是新手
答案 0 :(得分:1)
您可以使用以下正则表达式:
^(?=.*inventor(?:ies|y/2017))^(?:(?!inventory/all).)+$
^(?=.*inventor(?:ies|y/2017))
这是一项前瞻性工作,可确保我们仅在查找带有inventories
或inventory/2017
的字符串。为了减少回溯,您需要锚定它,即^
,它表明匹配应该从句子的开头开始。因此,只做^.*inventor(?:ies|y/2017).*$
就足够了,因为选择的唯一两个就是这两个。
^(?:(?!inventory/all).)+$
这部分是对前面的否定看法,它断言从字符串的开头到字符串的末尾没有inverntory/all
。我添加了这一部分,以防您发现格式为inventoy/2017/inventory/all
的字符串。