当括号用于下面的程序输出时
['www.google.com'].
import re
teststring = "href=\"www.google.com\""
m=re.findall('href="(.*?)"',teststring)
print m;
Run Code Online (Sandbox Code Playgroud)
如果在findall函数中删除了括号,则输出为['href="www.google.com"'].
import re
teststring = "href=\"www.google.com\""
m=re.findall('href=".*?"',teststring)
print m;
Run Code Online (Sandbox Code Playgroud)
如果有人解释它是如何工作的将是有帮助的.
该re.findall()文件是在差异相当明显:
返回字符串中pattern的所有非重叠匹配,作为字符串列表.[...]如果模式中存在一个或多个组,则返回组列表; 如果模式有多个组,这将是一个元组列表.
因此,.findall()返回一个包含三种类型值之一的列表,具体取决于模式中的组数:
(...)括号):整个匹配的字符串('href="www.google.com"'在第二个示例中).'www.google.com'在第一个示例中).(?:...)如果您不想要该行为,请使用非捕获组();如果需要更多信息,请添加组.例如,在href=零件周围添加一个组将产生一个元组列表,每个元组包含两个元素:
>>> re.findall('(href=)"(.*?)"', teststring)
[('href=', 'www.google.com')]
Run Code Online (Sandbox Code Playgroud)