什么是 re
模块?
re
模块是 Python 标准库中的一个模块,用于处理正则表达式(Regular Expressions)。正则表达式是一种强大的文本匹配工具,可以用来搜索、替换、分割字符串等。通过 re
模块,我们可以轻松地在 Python 中使用正则表达式。
导入 re
模块
要使用 re
模块,首先需要导入它:
import re
基本匹配
1. re.match()
re.match()
函数用于从字符串的起始位置匹配一个模式,如果字符串的起始位置不符合模式,则返回 None
。
import re
# 匹配字符串的起始位置
result = re.match(r'Hello', 'Hello, World!')
if result:
print('Match found:', result.group()) # 输出: Match found: Hello
else:
print('No match')
2. re.search()
re.search()
函数用于在整个字符串中搜索第一个符合模式的子串,如果找到则返回匹配对象,否则返回 None
。
import re
# 在整个字符串中搜索
result = re.search(r'World', 'Hello, World!')
if result:
print('Match found:', result.group()) # 输出: Match found: World
else:
print('No match')
全局匹配
3. re.findall()
re.findall()
函数用于在字符串中找到所有符合模式的子串,并返回一个列表。
import re
# 找到所有符合模式的子串
result = re.findall(r'\b\w+\b', 'Hello, World! How are you?')
print(result) # 输出: ['Hello', 'World', 'How', 'are', 'you']
4. re.finditer()
re.finditer()
函数类似于 re.findall()
,但它返回一个迭代器,每个元素是一个匹配对象。
import re
# 返回一个迭代器,每个元素是一个匹配对象
for match in re.finditer(r'\b\w+\b', 'Hello, World! How are you?'):
print(match.group()) # 输出: Hello, World, How, are, you
替换和分割
5. re.sub()
re.sub()
函数用于将字符串中符合模式的部分替换为指定的字符串。
import re
# 将符合模式的部分替换为指定的字符串
new_string = re.sub(r'World', 'Python', 'Hello, World!')
print(new_string) # 输出: Hello, Python!
6. re.split()
re.split()
函数用于根据模式分割字符串,并返回一个列表。
import re
# 根据模式分割字符串
result = re.split(r',', 'apple,banana,orange')
print(result) # 输出: ['apple', 'banana', 'orange']
编译正则表达式
7. re.compile()
re.compile()
函数用于编译正则表达式,生成一个正则表达式对象,可以多次复用。
import re
# 编译正则表达式
pattern = re.compile(r'\b\w+\b')
# 使用编译后的正则表达式对象进行匹配
result = pattern.findall('Hello, World! How are you?')
print(result) # 输出: ['Hello', 'World', 'How', 'are', 'you']
高级匹配
8. 分组和捕获
正则表达式中的分组和捕获可以用于提取特定部分的匹配结果。
import re
# 分组和捕获
result = re.search(r'(\w+), (\w+)', 'John, Doe')
if result:
print('First name:', result.group(1)) # 输出: First name: John
print('Last name:', result.group(2)) # 输出: Last name: Doe
9. 非捕获分组
非捕获分组用于匹配但不捕获结果,常用于逻辑分组。
import re
# 非捕获分组
result = re.search(r'(?:\w+), (\w+)', 'John, Doe')
if result:
print('Last name:', result.group(1)) # 输出: Last name: Doe
实战案例:验证邮箱地址
假设我们需要编写一个函数来验证用户输入的邮箱地址是否有效。有效的邮箱地址应符合以下规则:
以字母或数字开头 可以包含字母、数字、下划线 _
和点.
必须包含一个 @
符号@
后面必须有一个域名,域名由字母、数字、下划线_
和点.
组成域名后必须有一个顶级域名,如 .com
、.org
等
import re
def is_valid_email(email):
# 定义正则表达式
pattern = r'^[a-zA-Z0-9][a-zA-Z0-9_.]*@[a-zA-Z0-9][a-zA-Z0-9_.]*\.[a-zA-Z]{2,}$'
# 使用 re.match 进行匹配
if re.match(pattern, email):
return True
else:
return False
# 测试
emails = [
'john.doe@example.com',
'invalid-email@',
'no_at_symbol.com',
'valid_email_123@example.org',
'valid.email@sub.domain.com'
]
for email in emails:
print(f'{email}: {is_valid_email(email)}')
总结
本文介绍了 Python 中 re
模块的基本用法,包括基本匹配、全局匹配、替换和分割、编译正则表达式、分组和捕获、非捕获分组等内容。通过实际的代码示例,逐步引导读者从简单到复杂地掌握正则表达式的使用方法。最后,通过一个实战案例展示了如何使用 re
模块验证邮箱地址的有效性。
好了,今天的分享就到这里了,我们下期见。如果本文对你有帮助,请动动你可爱的小手指点赞、转发、在看吧!
付费合集推荐
文末福利
公众号消息窗口回复“编程资料”,获取Python编程、人工智能、爬虫等100+本精品电子书。