正则表达式
Python正则表达式教程
正则表达式(Regular Expression)是一种强大的字符串匹配工具,它使用特定的语法规则来描述字符串模式。在Python中,我们可以通过re模块来使用正则表达式。
基础语法
基本匹配规则
- 直接字符:精确匹配字符本身
\d:匹配一个数字(等价于[0-9])\w:匹配一个字母、数字或下划线(等价于[a-zA-Z0-9_])\s:匹配一个空白字符(包括空格、制表符等).:匹配任意一个字符(除了换行符)
数量限定符
*:匹配前面的字符0次或多次+:匹配前面的字符1次或多次?:匹配前面的字符0次或1次{n}:匹配前面的字符恰好n次{n,}:匹配前面的字符至少n次{n,m}:匹配前面的字符n到m次
示例:
字符集和范围
[abc]:匹配a、b或c中的任意一个字符[a-z]:匹配任意小写字母[0-9a-zA-Z_]:匹配数字、字母或下划线[^abc]:匹配除了a、b、c之外的任意字符
示例:
边界匹配
^:匹配字符串的开头$:匹配字符串的结尾\b:匹配单词边界
示例:
分组和或操作
(pattern):捕获分组(?:pattern):非捕获分组A|B:匹配A或B
示例:
Python中的re模块
基本使用
常用方法
re.match(pattern, string):从字符串开头匹配re.search(pattern, string):搜索整个字符串re.findall(pattern, string):返回所有匹配项re.finditer(pattern, string):返回匹配迭代器re.split(pattern, string):按模式分割字符串re.sub(pattern, repl, string):替换匹配项
分组提取
编译正则表达式
对于需要重复使用的正则表达式,可以先编译:
高级技巧
非贪婪匹配
默认情况下,正则表达式会尽可能多地匹配(贪婪模式),添加?可以改为非贪婪模式:
验证时间格式
验证Email地址
提取带名字的Email
实际应用示例
分割字符串
查找和替换
最佳实践
- 使用
r前缀避免转义问题 - 复杂的正则表达式添加注释(Python 3.x支持
re.VERBOSE) - 对于频繁使用的正则表达式,先编译再使用
- 考虑使用第三方库如
regex(比标准库re功能更强大)
正则表达式是一个强大的工具,但也容易变得复杂难懂。建议从简单模式开始,逐步构建复杂的表达式,并始终进行充分的测试。

