response = 'li><a href="/beautifulsoup/" title="BeautifulSoup"><......'
我打算捕获的是/beautifulsoup/
这是正确的代码
link =re.findall(r'href=\"?([^\" ]+)',response)
这是我的代码
link =re.findall(r'><a\b href=\"? .\"\b',response)
我有三个问题:
1)为什么使用方括号。它们只应用于字符中的某些序列
2)为什么没有'。'在问号后的正确代码
3)为什么使用括号;它们只应用于分组,但不需要分组
答案 0 :(得分:0)
1)方括号不适用于字符序列。它们匹配括号内的任何一个字符。 [abc]
匹配a,b或c。如果您使用[^...]
,它将匹配括号内不包含的任何一个字符。 [^abc]
匹配任何非a,b或c。
2)[^\" ]
位基本上取代了您的.
。它匹配"
或空格以外的任何内容。使用+
量词,它会保持匹配(贪婪)直到有引号或空格。
3)由于您想获得/beautifulsoup/
,因此需要进行分组。使用()
,美丽的汤在第1组中。没有组,您将获得整个匹配,即href="/beautifulsoup/