【python正则表达式语法学习笔记】在Python中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找、替换和提取字符串中的特定模式。掌握正则表达式的语法对于数据清洗、日志分析、表单验证等任务非常有帮助。以下是对Python正则表达式常用语法的总结。
一、正则表达式基础语法
| 符号 | 含义 | 示例 |
| `.` | 匹配任意单个字符(除了换行符) | `a.c` 可以匹配 "abc", "aac" 等 |
| `^` | 匹配字符串的开头 | `^hello` 匹配以 "hello" 开头的字符串 |
| `$` | 匹配字符串的结尾 | `world$` 匹配以 "world" 结尾的字符串 |
| `` | 匹配前面的字符0次或多次 | `gogle` 匹配 "g", "goo", "google" 等 |
| `+` | 匹配前面的字符1次或多次 | `go+gle` 匹配 "google", "goooole",不匹配 "g" |
| `?` | 匹配前面的字符0次或1次 | `colou?r` 匹配 "color" 或 "colour" |
| `\d` | 匹配一个数字(等价于 `[0-9]`) | `\d{3}` 匹配三个数字 |
| `\D` | 匹配非数字字符 | `\D+` 匹配非数字组成的字符串 |
| `\s` | 匹配空白字符(空格、制表符、换行等) | `\s+` 匹配多个空白字符 |
| `\S` | 匹配非空白字符 | `\S+` 匹配非空白字符组成的字符串 |
| `\w` | 匹配字母、数字和下划线(等价于 `[a-zA-Z0-9_]`) | `\w+` 匹配单词 |
| `\W` | 匹配非字母、数字和下划线的字符 | `\W+` 匹配非单词字符 |
| `[]` | 匹配括号内的任意一个字符 | `[aeiou]` 匹配任意一个元音字母 |
| `[^]` | 匹配不在括号内的任意一个字符 | `[^aeiou]` 匹配非元音字母 |
| `()` | 分组,用于捕获子表达式 | `(abc)+` 匹配 "abc", "abcabc" 等 |
二、常用函数与模块
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.finditer()` | 返回迭代器,每个元素是一个匹配对象 | `re.finditer(r'\d+', 'abc123def456')` |
| `re.sub()` | 替换匹配项 | `re.sub(r'\d+', 'X', 'abc123def456')` 返回 `'abcXdefX'` |
| `re.split()` | 根据正则表达式分割字符串 | `re.split(r'\s+', 'hello world')` 返回 `['hello', 'world']` |
三、特殊用法与技巧
| 用法 | 说明 | 示例 |
| `re.IGNORECASE` / `re.I` | 忽略大小写 | `re.findall(r'hello', 'HELLO world', re.I)` |
| `re.MULTILINE` / `re.M` | 多行模式,`^` 和 `$` 匹配每行的开头和结尾 | `re.findall(r'^hello', 'hello\nworld', re.M)` |
| `re.DOTALL` / `re.S` | 让 `.` 匹配包括换行符在内的所有字符 | `re.search(r'abc.def', 'abc\ndef', re.S)` |
| `re.VERBOSE` / `re.X` | 允许在正则表达式中添加注释和空格 | 使用 `re.compile(r'pattern', re.X)` 来编写更易读的正则表达式 |
四、常见应用场景
| 场景 | 正则表达式示例 |
| 验证邮箱格式 | `^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$` |
| 提取电话号码 | `\b\d{3}[-.]?\d{3}[-.]?\d{4}\b` |
| 匹配HTML标签 | `<[a-zA-Z][^>]>` |
| 提取URL | `https?://(?:www\.)?\S+` |
通过不断练习和应用,可以更加熟练地使用正则表达式来处理各种文本数据。建议在实际项目中结合 `re` 模块的函数进行测试,逐步提高对正则表达式的理解与运用能力。


