正则表达式(Regular Expression)是一种强大的文本处理工具,它使用特定模式的字符串来描述、匹配一系列符合某个句法规则的字符串。在Python中,通过内置的re模块可以轻松使用正则表达式进行各种文本操作。
Python正则表达式包含以下基本元素:
a匹配字符'a'.匹配任意字符[abc]匹配a、b或c中的任意一个*匹配0次或多次,+匹配1次或多次^匹配字符串开头,$匹配字符串结尾Python的re模块提供了多种正则表达式操作方法:
从字符串起始位置匹配模式,如果匹配成功则返回匹配对象,否则返回None。
import re
result = re.match(r'\d+', '123abc')
print(result.group()) # 输出: 123
扫描整个字符串并返回第一个成功的匹配。
result = re.search(r'\d+', 'abc123def')
print(result.group()) # 输出: 123
返回字符串中所有匹配的子串组成的列表。
results = re.findall(r'\d+', 'a1b22c333')
print(results) # 输出: ['1', '22', '333']
用于替换字符串中的匹配项。
new_str = re.sub(r'\d+', 'X', 'a1b22c333')
print(new_str) # 输出: aXbXcX
使用圆括号()可以创建分组,便于提取特定部分。
m = re.match(r'(\d{3})-(\d{3,8})', '010-12345')
print(m.groups()) # 输出: ('010', '12345')
默认情况下量词是贪婪的,添加?可变为非贪婪模式。
# 贪婪模式
print(re.match(r'^\d+', '12345').group()) # 输出: 12345
# 非贪婪模式
print(re.match(r'^\d+?', '12345').group()) # 输出: 1
对于需要重复使用的正则表达式,可以先编译提高效率。
pattern = re.compile(r'\d+')
result = pattern.match('123abc')
print(result.group()) # 输出: 123
r'[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}'r'https?://[\w.-]+\.[a-zA-Z]{2,6}(/\S*)?'r'1[3-9]\d{9}'r'[\u4e00-\u9fa5]+'Python正则表达式是文本处理的强大工具,掌握它可以大大提高开发效率。本文介绍了正则表达式的基本语法、re模块的常用方法以及一些高级技巧。在实际开发中,建议先编写测试用例验证正则表达式的准确性,对于复杂表达式可以分步构建。