搜索

pdf文档 Python 3.10.15 正则表达式 HOWTO

391.85 KB 18 页 0 下载 68 浏览 0 评论 0 收藏
语言 格式 评分
中文(简体)
.pdf
3
摘要
本文是关于在 Python 中通过 re 模块使用正则表达式的入门教程。正则表达式是一种嵌入 Python 的微小编程语言,用于匹配字符串或执行字符串操作。文档介绍了正则表达式的语法、使用方法,包括匹配字符、重复、编译正则表达式、分割字符串、搜索和替换等功能。同时,还讨论了反斜杠灾难、贪婪与非贪婪匹配、使用 re.VERBOSE 等常见问题和解决方案。
AI总结
# Python 正则表达式入门总结 本文是《Python 3.10.15 正则表达式 HOWTO》的简要总结,涵盖正则表达式的基础概念、使用方法及常见问题。 --- ## 1. 概述 正则表达式(Regular Expressions,简称 RE 或 regex)是一种嵌入 Python 并通过 `re` 模块实现的微型编程语言。它用于匹配字符串的特定模式,常见的应用场景包括验证字符串、查找或替换内容等。正则表达式会被编译为字节码,由 C 语言引擎执行,但本文不涉及优化问题。 正则表达式语言虽小,但并非所有字符串处理任务都可以用其完成。对于复杂任务,编写 Python 代码可能更清晰。 --- ## 2. 简单正则 ### 2.1 匹配字符 大多数字符(如字母、数字)可以直接匹配自身。特殊字符(元字符)需要转义或在特定上下文中使用。元字符包括:`^`、`$`、`*`、`+`、`?`、`{`、`}`、`[`、`]`、`\`、`|`、`(`、`)`。 字符类(`[ ]`)用于匹配特定字符集合。例如: - `a-z` 匹配任意小写字母。 - `a|b` 匹配 `a` 或 `b`。 ### 2.2 重复 元字符 `*`、`+`、`?` 和 `{m,n}` 用于指定字符的重复次数: - `*`:匹配零次或更多次。 - `+`:匹配一次或更多次。 - `?`:匹配零次或一次。 - `{m,n}`:匹配至少 `m` 次,最多 `n` 次。 例如: - `ab*` 匹配 `a` 后跟零个或多个 `b`。 - `a{3,5}` 匹配 `aaa` 到 `aaaaa`。 --- ## 3. 使用正则表达式 ### 3.1 编译正则表达式 正则表达式通过 `re.compile()` 编译为模式对象,支持以下方法: - `match()`:检查正则是否从字符串开头匹配。 - `search()`:扫描字符串,查找任意位置的匹配。 - `findall()`:返回所有匹配子字符串的列表。 - `finditer()`:返回所有匹配的迭代器。 ### 3.2 反斜杠灾难 正则表达式中的反斜杠与 Python 字符串中的转义冲突,导致重复转义。为简化,建议使用原始字符串(`r'...'`)表示正则。 ### 3.3 应用匹配 匹配失败时,`match()` 和 `search()` 返回 `None`。成功时返回匹配对象,包含匹配内容、起始和结束位置等信息。 --- ## 4. 更多模式能力 ### 4.1 更多元字符 - `.`:匹配任意字符(除了换行符)。 - `^` 和 `$`:分别匹配字符串的开头和结尾。 - `\b`:匹配单词边界。 - `\d`:匹配任意数字。 ### 4.2 分组 使用 `()` 创建分组,支持捕获和重用匹配内容。非捕获组(`(?:...)`)不捕获内容。 ### 4.3 前视断言 零宽度断言用于匹配特定位置,不消耗字符。例如: - `^abc`:匹配字符串开头为 `abc` 的内容。 - `(?!...)`:负向断言,匹配不在特定模式后的内容。 --- ## 5. 修改字符串 ### 5.1 分割字符串 `re.split()` 可以根据正则表达式分割字符串,例如: ```python re.split(r'\W', 'Hello, World!') # ['Hello', 'World', ''] ``` ### 5.2 搜索和替换 `re.sub()` 可以用正则替换字符串中的特定模式。例如: ```python re.sub(r'\d+', '###', 'The number is 123') # 'The number is ###' ``` --- ## 6. 常见问题 ### 6.1 使用字符串方法 固定字符串的替换(如 `str.replace()`)通常比正则更高效。在不涉及复杂模式时,优先使用字符串方法。 ### 6.2 `match()` 和 `search()` - `match()` 只检查字符串开头是否匹配。 - `search()` 会扫描整个字符串,查找任意位置的匹配。 ### 6.3 贪婪与非贪婪 默认情况下,正则表达式是贪婪的,会尽可能匹配更多字符。非贪婪模式(如 `*?`)会尽可能少地匹配字符。 ### 6.4 使用 `re.VERBOSE` `re.VERBOSE` 标志允许在正则中添加注释和空格,提高可读性。 --- ## 总结 正则表达式是 Python 中强大的字符串处理工具,但其复杂性可能导致新手困惑。通过理解基本语法、合理使用模块功能,并注意常见问题,可以更高效地完成字符串匹配和修改任务。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 6 页请下载阅读 -
文档评分
请文明评论,理性发言.