Python正则表达式学习
- IT业界
- 2025-08-22 13:18:02

Python正则表达式全攻略 一、正则表达式基础 1. 什么是正则表达式? 用于描述字符串匹配规则的表达式广泛应用于文本处理、表单验证、数据清洗等领域 2. Python中的re模块 import re 3. 基础语法 字符说明示例.匹配任意字符(除换行)a.c → abc\d数字 [0-9]\d\d → 42\D非数字\D → a\w字母数字下划线\w+ → Ab3_\W非单词字符\W → %\s空白字符\s → 空格\S非空白字符^字符串开始^abc$字符串结束xyz$ 二、量词与分组 1. 量词 * # 0次或多次 + # 1次或多次 ? # 0次或1次 {n} # 正好n次 {n,} # 至少n次 {n,m} # n到m次 2. 分组与或运算 () # 捕获分组 (?:) # 非捕获分组 | # 或运算 (?P<name>) # 命名分组 三、re模块常用方法 1. 匹配方法 re.match() # 从字符串起始位置匹配 re.search() # 扫描整个字符串 re.findall() # 返回所有匹配结果 re.finditer() # 返回迭代器 re.sub() # 替换匹配内容 2. 使用示例 text = "Phone: 123-456-7890, 555-1234" # 查找所有电话号码 numbers = re.findall(r'\d{3}-\d{3}-\d{4}', text) # 替换电话号码格式 new_text = re.sub(r'(\d{3})-(\d{3})-(\d{4})', r'(\1) \2-\3', text) 四、进阶技巧 1. 编译正则表达式 pattern = re pile(r'\b[A-Za-z]+\b') matches = pattern.findall(text) 2. 标志参数 re.IGNORECASE # 忽略大小写 re.MULTILINE # 多行模式 re.DOTALL # 使.匹配换行符 3. 贪婪与非贪婪 .* # 贪婪匹配 .*? # 非贪婪匹配 4. 前后断言 (?=exp) # 正向后行断言 (?!exp) # 负向后行断言 (?<=exp) # 正向前行断言 (?<!exp) # 负向前行断言 五、实战案例 1. 邮箱验证 email_pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' is_valid = re.match(email_pattern, "user@example ") 2. 提取网页链接 html = '<a href=" example ">Link</a>' links = re.findall(r'href=["\'](https?://.*?)["\']', html) 3. 日志分析 log = "2023-08-20 14:30:45 [ERROR] Connection timeout" pattern = r'(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2}) \[(\w+)\] (.*)' match = re.match(pattern, log) 4. 数据清洗 dirty_data = "Price: $1,234.56 (50% OFF!)" clean = re.sub(r'[^\d.]', '', dirty_data) # 保留数字和小数点 5. 复杂密码验证 password_pattern = r''' ^(?=.*[A-Z]) # 至少一个大写字母 (?=.*[a-z]) # 至少一个小写字母 (?=.*\d) # 至少一个数字 (?=.*[@$!%*?&]) # 至少一个特殊字符 [A-Za-z\d@$!%*?&]{8,}$ # 总长度至少8 ''' is_strong = re.search(password_pattern, "Passw0rd!", re.VERBOSE) 六、性能优化 预编译常用正则表达式避免过度使用.*使用原子组防止回溯爆炸优先使用具体字符集代替.合理使用^和$锚定 七、常见问题 特殊字符未转义(如.需要写成.)贪婪匹配导致意外结果忘记处理多行模式分组引用错误(\1 vs $1)Unicode字符处理 八、调试工具推荐 RegExr 在线测试工具Python的re.DEBUG标志regex101 可视化分析
通过这个教程,你可以逐步掌握:
从基础匹配到高级模式的应用常见文本处理场景的解决方案正则表达式性能优化技巧复杂模式的设计与调试方法Python正则表达式学习由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Python正则表达式学习”