Python 正则表达式实战第8篇
Python正则表达式实战第8篇。正则表达式是处理文本的利器,本文全面讲解Python re模块的实战用法。Introduction:正则表达式是IT工程师必须掌握的核心技能之一,广泛应用于数据验证、文本搜索替换、日志解析等场景。相比字符串操作,正则可以处理更复杂的模式匹配问题,是办公自动化和数据分析的基础工具。本文涵盖基本匹配、元字符、分组捕获、贪婪非贪婪、编译性能优化、常见错误处理等核心知识点,配合完整代码示例,帮助读者快速掌握Python正则表达式。建议读者边学边练,实际动手写几个正则才能真正理解。
基本匹配:Python用re模块处理正则表达式。import re pattern = r'\d{3}-\d{4}' text = '我的电话是123-4567' match = re.search(pattern, text) if match: print(f'找到:{match.group()}') 上面代码演示了最基本的数字匹配模式,\d表示任意数字,{3}表示重复3次。
常用元字符:正则表达式有一整套元字符体系。\d表示数字,\w表示字母数字下划线,\s表示空白字符。加号+表示一次或多次,星号*表示零次或多次,问号?表示零次或一次。示例代码:import re text = '张三188-1234-5678' phones = re.findall(r'\d{3}-\d{4}-\d{4}', text) print(phones) 替换示例:new_text = re.sub(r'\d{3}-\d{4}-\d{4}', '[电话号码]', text) print(new_text)
分组捕获:用圆括号创建分组,可以同时捕获多个部分。import re log = '2024-01-15 ERROR:连接失败' pattern = r'(\d{4}-\d{2}-\d{2}) (\w+):(.+)' match = re.search(pattern, log) if match: date, level, msg = match.groups() print(f'日期:{date}级别:{level}消息:{msg}')
贪婪vs非贪婪:默认是贪婪匹配,会尽可能多地匹配字符。在量词后面加问号变成非贪婪匹配。import re html = '
编译正则提高性能:重复使用同一个正则时,先用compile编译再匹配,效率显著提升。import re pattern = re.compile(r'^\w+@\w+\.\w+$') emails = ['test@example.com', 'invalid', 'user@domain.org'] valid = [e for e in emails if pattern.match(e)] print(valid)
常见错误处理:正则表达式写错时会抛出re.error异常,生产环境务必用try-except包裹。import re try: pattern = re.compile(r'[a-z') except re.error as e: print(f'正则错误:{e}')
以上就是Python正则表达式的核心知识点,建议动手实践。