Python 正则表达式re.findall用法
1. 引言
正则表达式(regular expression)是对字符串模式进行匹配和操作的工具。在Python中,我们可以使用内置的re模块来使用正则表达式。
在本文中,我们将详细介绍Python中re.findall()方法的使用。re.findall()方法可以用于从字符串中查找满足某个正则表达式的所有非重叠的匹配项。该方法返回一个列表,列表中的每个元素表示一个匹配项。
2. re.findall()方法的使用语法
re.findall()方法的语法如下:
参数说明:
pattern
:要匹配的正则表达式模式。string
:要进行匹配的字符串。flags
(可选):用于控制正则表达式的匹配方式。
3. 使用示例
下面是一些示例,演示了如何使用re.findall()方法,以及它的一些常用应用场景。
示例1:查找数字
首先,让我们查找一个字符串中的所有数字。
输出结果:
['100.99', '20']
解释:
\d+
表示匹配一或多个数字。\.?
表示匹配一个小数点(可选)。\d*
表示匹配零或多个数字。
示例2:查找邮箱地址
接下来,我们来查找一个字符串中的所有邮箱地址。
输出结果:
['abc@example.com', 'xyz@example.com']
解释:
[A-Za-z0-9._%+-]+
表示匹配由大小写字母、数字、点、下划线、百分号、加号、减号组成的字符串。@
表示匹配邮箱地址中的atsign符号。[A-Za-z0-9.-]+
表示匹配由大小写字母、数字、点、减号组成的字符串。\.
表示匹配邮箱地址中的小数点。[A-Za-z]{2,}
表示匹配至少两个字母组成的字符串。
示例3:查找HTML标签
现在,让我们查找一个HTML代码中的所有标签。
输出结果:
['<html>', '<body>', '<h1>', '</h1>', '<p>', '</p>', '<p>', '</p>', '</body>', '</html>']
解释:
<.*?>
表示匹配任意标签,.*?
表示非贪婪匹配。
4. re.findall()方法的常用标志
re.findall()方法还支持一些标志,用于控制正则表达式的匹配方式。下面列举了其中几个常用的标志。
标志 | 描述 |
---|---|
re.I | 使匹配对大小写不敏感 |
re.M | 多行匹配,影响 ^ 和 $ |
re.S | 使 . 匹配包括换行符在内的所有字符 |
例如,我们可以使用re.I标志来进行忽略大小写的匹配。
输出结果:
['Hello']
解释:
flags=re.I
表示忽略大小写。
5. 总结
在本文中,我们介绍了Python中re.findall()方法的用法以及一些常用应用场景。通过re.findall()方法,我们可以轻松查找字符串中满足某个正则表达式的所有非重叠的匹配项。在实际应用中,正则表达式常常用于从文本中提取特定模式的信息,例如查找数字、邮箱地址、HTML标签等。同时,我们还学习了如何使用标志来控制正则表达式的匹配方式。