Python 正则表达式re.findall用法

Python 正则表达式re.findall用法

Python 正则表达式re.findall用法

1. 引言

正则表达式(regular expression)是对字符串模式进行匹配和操作的工具。在Python中,我们可以使用内置的re模块来使用正则表达式。

在本文中,我们将详细介绍Python中re.findall()方法的使用。re.findall()方法可以用于从字符串中查找满足某个正则表达式的所有非重叠的匹配项。该方法返回一个列表,列表中的每个元素表示一个匹配项。

2. re.findall()方法的使用语法

re.findall()方法的语法如下:

re.findall(pattern, string, flags=0)
Python

参数说明:

  • pattern:要匹配的正则表达式模式。
  • string:要进行匹配的字符串。
  • flags(可选):用于控制正则表达式的匹配方式。

3. 使用示例

下面是一些示例,演示了如何使用re.findall()方法,以及它的一些常用应用场景。

示例1:查找数字

首先,让我们查找一个字符串中的所有数字。

import re

string = "The price is $100.99. The discount is 20%."
pattern = r'\d+\.?\d*'
result = re.findall(pattern, string)

print(result)
Python

输出结果:

['100.99', '20']

解释:

  • \d+ 表示匹配一或多个数字。
  • \.? 表示匹配一个小数点(可选)。
  • \d* 表示匹配零或多个数字。

示例2:查找邮箱地址

接下来,我们来查找一个字符串中的所有邮箱地址。

import re

string = "My email is abc@example.com. Please contact me at xyz@example.com."
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'
result = re.findall(pattern, string)

print(result)
Python

输出结果:

['abc@example.com', 'xyz@example.com']

解释:

  • [A-Za-z0-9._%+-]+ 表示匹配由大小写字母、数字、点、下划线、百分号、加号、减号组成的字符串。
  • @ 表示匹配邮箱地址中的atsign符号。
  • [A-Za-z0-9.-]+ 表示匹配由大小写字母、数字、点、减号组成的字符串。
  • \. 表示匹配邮箱地址中的小数点。
  • [A-Za-z]{2,} 表示匹配至少两个字母组成的字符串。

示例3:查找HTML标签

现在,让我们查找一个HTML代码中的所有标签。

import re

html = '''
<html>
<body>
<h1>Title</h1>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</body>
</html>
'''
pattern = r'<.*?>'
result = re.findall(pattern, html)

print(result)
Python

输出结果:

['<html>', '<body>', '<h1>', '</h1>', '<p>', '</p>', '<p>', '</p>', '</body>', '</html>']

解释:

  • <.*?> 表示匹配任意标签,.*? 表示非贪婪匹配。

4. re.findall()方法的常用标志

re.findall()方法还支持一些标志,用于控制正则表达式的匹配方式。下面列举了其中几个常用的标志。

标志 描述
re.I 使匹配对大小写不敏感
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行符在内的所有字符

例如,我们可以使用re.I标志来进行忽略大小写的匹配。

import re

string = "Hello, World!"
pattern = r'hello'
result = re.findall(pattern, string, flags=re.I)

print(result)
Python

输出结果:

['Hello']

解释:

  • flags=re.I 表示忽略大小写。

5. 总结

在本文中,我们介绍了Python中re.findall()方法的用法以及一些常用应用场景。通过re.findall()方法,我们可以轻松查找字符串中满足某个正则表达式的所有非重叠的匹配项。在实际应用中,正则表达式常常用于从文本中提取特定模式的信息,例如查找数字、邮箱地址、HTML标签等。同时,我们还学习了如何使用标志来控制正则表达式的匹配方式。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册