Python正则匹配靠re模块,核心是写对pattern并选对方法;match从开头匹配,search全局扫描;需注意^$锁首尾、\b防误匹配、判空再group、分组提取、预编译提效、标志控制行为、转义特殊字符。

Python正则匹配靠 re 模块,核心是写对模式(pattern),再选对方法(match、search、findall 等),不难但细节决定成败。
re.match() 只从字符串开头匹配,哪怕后面有符合的也不管;re.search() 扫描整个字符串,找到第一个就停。别混淆它们的定位逻辑。
re.match(r'^1[3-9]\d{9}$', text) —— ^ 和 $ 锁死首尾才叫“完整匹配”re.search(r'\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b', log_line),\b 防止匹配到 192.168.1.1000 中的前段None,务必先判空再调 .group(),否则报 AttributeError
带括号的子模式会捕获分组,.group(1) 就取第一个括号里的内容;findall 更省事——有分组就只返回分组内容,没分组才返回全部匹配串。
re.search(r'(\w+)@(\w+\.\w+)', 'contact@py.org').group(1) → 'contact'
re.findall(r'\b\w+@\w+\.\w+\b', text) 直接得列表,不用循环re.findall(r'(\w+)@(\w+\.\w+)', text),返回 [('user', 'domain.com'), ...]
频繁使用的正则建议用 re.compile() 预编译,提升性能;re.I 忽略大小写,re.S 让 . 匹配换行符;默认是贪婪匹配,加 ? 变成非贪婪,比如 r'a.*?b' 匹配最短的 a…b。
立即学习“Python免费学习笔记(深入)”;
re.S,re.search(r'<div>(.*?)</div>', html, re.S) 才能跨行抓内容re.findall(r'python', text, re.I)
phone_pat = re.compile(r'1[3-9]\d{9}');phone_pat.search(text)
特殊字符如 .、*、+、?、^、$、\、|、(、)、[、] 在模式里有含义,字面意思要加反斜杠转义;不确定时用 re.escape() 自动转义字符串。
. 的版本号如 2.15.3:写 r'2\.15\.3',不是 '2.15.3'(那个点会匹配任意字符)re.escape(user_input) 再放进 pattern,防注入式正则攻击re.DEBUG 标志,比如 re.compile(r'\d+', re.DEBUG),能打印出解析树,看清引擎怎么理解你的模式以上就是Python正则匹配怎么做_re模块实战技巧【教程】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号