Python正则 re.findall(string[, pos[, endpos]]) 查询所有匹配

返回字符串中的所有非重叠模式,作为字符串或元组列表。左右扫描字符串,匹配在找到的顺序中返回。结果包含空匹配

结果取决于模式中捕获组的数量。它的结果不一定是列表。

  1. 如果没有分组,则返回与整个模式匹配的字符串列表

  2. 如果恰好有一个组,请返回匹配该组的字符串列表

  3. 如果存在多个组,则返回与组匹配的字符串的元组列表

  4. 非捕获组不会影响结果的形式

正因为这样多变的特性,所以我们在没有理解小括号的全部意义的时候,findall的返回结果会让我们莫名其妙。

 

例子1:查找a1b22c333d4444e5555,中所有【一个字母+2个及以上数字】的匹配结果。

这是我们最常见的用法。比较简单。

 

例子2:这里我们对【一个字母+2个及以上数字】的【2个及以上数字】进行分组。加上括号。

结果已经变了。这个在理解了分组之后,也很好理解。使用了分组之后,findall不会输出分组以外的内容。

 

例子3:如果我们又要使用分组功能,又想要输出全部内容,那么就在整体外面再加一个括号。

看到元组列表中,每个元组的第一项就是全部内容的结果。

如果存在多个组,则返回与组匹配的字符串的元组列表。。上面例子3就是也可以当做案例。

我们讲例子2中的小括号弄成非捕获组。

正则表达式在线测试工具
人工服务

正则表达式付费代写、咨询、答疑解惑,专业、快速、高效帮您解决正则表达式方面的各种问题,可定制各类软件应用程序。

联系客服
正则表达式基础语法
. - 除换行符以外的所有字符。
^ - 字符串开头。
$ - 字符串结尾。
\d,\w,\s - 匹配数字、字符、空格。
\D,\W,\S - 匹配非数字、非字符、非空格。
[abc] - 匹配 a、b 或 c 中的一个字母。
[a-z] - 匹配 a 到 z 中的一个字母。
[^abc] - 匹配除了 a、b 或 c 中的其他字母。
aa|bb - 匹配 aa 或 bb。
? - 0 次或 1 次匹配。
* - 匹配 0 次或多次。
+ - 匹配 1 次或多次。
{n} - 匹配 n次。
{n,} - 匹配 n次以上。
{m,n} - 最少 m 次,最多 n 次匹配。
(expr) - 捕获 expr 子模式,以 \1 使用它。
(?:expr) - 忽略捕获的子模式。
(?=expr) - 正向预查模式 expr
(?!expr) - 负向预查模式 expr

在线客服QQ:543690914,备案号: 苏ICP备15037649号-32。东海县白塔埠镇佳诚电脑经营部版权所有。