【python正则表达式语法学习笔记】在Python编程中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找、替换和提取字符串中的特定模式。掌握正则表达式的语法对于高效处理数据、日志分析、数据清洗等任务非常有帮助。本文将对Python中常用的正则表达式语法进行总结,并通过表格形式直观展示常用符号及其功能。
一、正则表达式基础语法
符号 | 含义 | 示例 | 说明 |
`.` | 匹配任意单个字符(除换行符外) | `a.c` | 可匹配 "abc", "a1c" 等 |
`^` | 匹配字符串的开头 | `^hello` | 匹配以 "hello" 开头的字符串 |
`$` | 匹配字符串的结尾 | `world$` | 匹配以 "world" 结尾的字符串 |
`` | 匹配前面的字符0次或多次 | `a` | 可匹配 "", "a", "aa", "aaa" 等 |
`+` | 匹配前面的字符1次或多次 | `a+` | 可匹配 "a", "aa", "aaa" 等 |
`?` | 匹配前面的字符0次或1次 | `a?` | 可匹配 "" 或 "a" |
`\d` | 匹配一个数字(0-9) | `\d{3}` | 匹配三位数字,如 "123" |
`\D` | 匹配一个非数字字符 | `\D+` | 匹配多个非数字字符 |
`\w` | 匹配一个字母、数字或下划线 | `\w+` | 匹配单词形式的字符串 |
`\W` | 匹配一个非字母、数字或下划线的字符 | `\W+` | 匹配非单词字符 |
`\s` | 匹配一个空白字符(空格、换行、制表符等) | `\s+` | 匹配多个空白字符 |
`\S` | 匹配一个非空白字符 | `\S+` | 匹配多个非空白字符 |
`[]` | 匹配括号内的任意一个字符 | `[aeiou]` | 匹配任意元音字母 |
`[^]` | 匹配不在括号内的任意一个字符 | `[^aeiou]` | 匹配非元音字母 |
`()` | 分组,用于捕获子表达式 | `(ab)+` | 匹配 "ab", "abab" 等 |
二、常用函数与模块
Python中使用 `re` 模块来处理正则表达式,以下是几个常用函数:
函数 | 功能 | 示例 |
`re.match()` | 从字符串开头开始匹配 | `re.match(r'hello', 'hello world')` |
`re.search()` | 在整个字符串中搜索匹配项 | `re.search(r'world', 'hello world')` |
`re.findall()` | 找出所有匹配项 | `re.findall(r'\d+', 'abc123def456')` 返回 `['123', '456']` |
`re.sub()` | 替换匹配到的内容 | `re.sub(r'\d+', 'X', 'abc123def456')` 返回 `'abcXdefX'` |
`re.split()` | 根据正则表达式分割字符串 | `re.split(r'\s+', 'hello world')` 返回 `['hello', 'world']` |
三、进阶用法
用法 | 说明 | 示例 |
`re.IGNORECASE` 或 `re.I` | 忽略大小写 | `re.search(r'hello', 'HELLO', re.I)` |
`re.MULTILINE` 或 `re.M` | 多行模式,`^` 和 `$` 匹配每行开头和结尾 | `re.match(r'^start', 'start\nend', re.M)` |
`re.DOTALL` 或 `re.S` | 使 `.` 匹配包括换行符在内的所有字符 | `re.search(r'a.b', 'a\nb', re.S)` |
`re.VERBOSE` 或 `re.X` | 允许在正则表达式中添加注释和空格 | `re.compile(r''' \d{3} 三位数字 ''', re.X)` |
四、注意事项
- 正则表达式在处理复杂模式时容易产生性能问题,应尽量避免过度复杂的模式。
- 使用原始字符串(如 `r'pattern'`)可以避免转义字符的干扰。
- 在实际应用中,建议先测试正则表达式是否符合预期,可使用在线正则表达式测试工具辅助验证。
总结
正则表达式是Python中处理字符串的强大工具,但其语法相对复杂,需要不断练习和积累经验。通过理解基本符号、常用函数以及进阶技巧,可以更高效地进行文本处理和数据分析。希望这份学习笔记能帮助你在实际开发中更好地运用正则表达式。