Python 中的 re 模块是用来进行正则表达式匹配操作的工具,可以用来进行复杂的字符串搜索、替换和提取等操作。正则表达式是一种特殊的文本模式,用于描述字符串的模式。
常见的 re 模块使用方法
- 导入
re模块import re - 常用函数:
re.match()
从字符串的起始位置开始匹配,如果起始位置不匹配,返回None。result = re.match(r'abc', 'abcdef') print(result) # <re.Match object; span=(0, 3), match='abc'>re.search()
在整个字符串中搜索匹配的模式,如果找到,返回一个匹配对象,否则返回None。result = re.search(r'abc', 'abcdef') print(result) # <re.Match object; span=(0, 3), match='abc'>re.findall()
返回一个列表,包含所有匹配正则表达式的子字符串。result = re.findall(r'\d+', '123abc456def') print(result) # ['123', '456']re.finditer()
返回一个迭代器,包含所有匹配正则表达式的匹配对象。result = re.finditer(r'\d+', '123abc456def') for match in result: print(match.group()) # 123, 456re.sub()
用于替换字符串中的匹配部分。result = re.sub(r'\d+', '#', 'abc123def456') print(result) # abc#def#re.split()
用正则表达式分割字符串。result = re.split(r'\d+', 'abc123def456') print(result) # ['abc', 'def', '']
正则表达式的常用语法:
.:匹配任意单个字符(除换行符外)。^:匹配字符串的开头。$:匹配字符串的结尾。*:匹配前面的表达式零次或多次。+:匹配前面的表达式一次或多次。?:匹配前面的表达式零次或一次。{n}:匹配前面的表达式恰好 n 次。{n,}:匹配前面的表达式至少 n 次。{n,m}:匹配前面的表达式至少 n 次,但不超过 m 次。[]:匹配字符集中的任意一个字符(如[abc]匹配 ‘a’, ‘b’, ‘c’)。|:匹配左右任意一个表达式(即“或”)。():分组,表示将匹配的部分作为一个整体处理。
示例:
1. 匹配电话号码
import re
pattern = r'(\d{3})-(\d{4})-(\d{4})'
text = "我的电话号码是 123-4567-8901,另一个是 987-6543-2100"
matches = re.findall(pattern, text)
for match in matches:
print(match)
输出:
('123', '4567', '8901')
('987', '6543', '2100')
2. 验证邮箱地址
import re
pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
email = 'example@example.com'
if re.match(pattern, email):
print("有效的邮箱地址")
else:
print("无效的邮箱地址")
输出:
有效的邮箱地址
3. 替换文本中的数字
import re
text = "我有123个苹果和456个香蕉"
new_text = re.sub(r'\d+', '#', text)
print(new_text)
输出:
我有#个苹果和#个香蕉
正则表达式是一个强大的工具,能够帮助我们进行复杂的文本匹配和处理。如果你有具体的正则表达式需求或者遇到困难,可以告诉我,我可以帮助你编写或调试正则表达式!
发表回复