与正则表达式方括号混淆[重复]

问题描述 投票:-5回答:1
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)为什么使用括号;它们只应用于分组,但不需要分组

python regex
1个回答
0
投票

1)方括号不适用于字符序列。它们匹配括号内的任何一个字符。 [abc]匹配a,b或c。如果您使用[^...],它将匹配括号内不包含的任何一个字符。 [^abc]匹配任何不是a,b或c的东西。

2)[^\" ]位基本上取代了你的.。它匹配除了"或空间之外的任何东西。使用+量词,它保持匹配(贪婪)直到有引号或空格。

3)因为你想获得/beautifulsoup/,所以需要分组。使用(),美丽的汤是第1组。没有组,你将获得整场比赛,这是href="/beautifulsoup/

© www.soinside.com 2019 - 2024. All rights reserved.