【python正则表达式语法学习笔记】在Python中,正则表达式(Regular Expression)是一种强大的文本处理工具,常用于字符串的匹配、查找、替换等操作。本文将对Python正则表达式的常用语法进行总结,并通过表格形式展示其基本用法和示例。
一、正则表达式基础语法
| 符号 | 含义 | 示例 | 说明 |
| `.` | 匹配任意单个字符(除换行符外) | `a.c` | 可匹配 "abc", "aac" 等 |
| `^` | 匹配字符串开头 | `^hello` | 匹配以 "hello" 开头的字符串 |
| `$` | 匹配字符串结尾 | `world$` | 匹配以 "world" 结尾的字符串 |
| `` | 前一个字符出现0次或多次 | `gogle` | 可匹配 "ggle", "google", "goooole" 等 |
| `+` | 前一个字符出现1次或多次 | `go+gle` | 可匹配 "google", "goooole",但不匹配 "ggle" |
| `?` | 前一个字符出现0次或1次 | `go?gle` | 可匹配 "ggle", "google" |
| `\d` | 匹配一个数字字符 | `\d{3}` | 匹配三个连续数字,如 "123" |
| `\D` | 匹配非数字字符 | `\D+` | 匹配多个非数字字符 |
| `\w` | 匹配字母、数字或下划线 | `\w+` | 匹配一个或多个单词字符 |
| `\W` | 匹配非单词字符 | `\W+` | 匹配一个或多个非单词字符 |
| `\s` | 匹配空白字符(空格、换行、制表符等) | `\s+` | 匹配多个空白字符 |
| `\S` | 匹配非空白字符 | `\S+` | 匹配多个非空白字符 |
二、分组与捕获
| 符号 | 含义 | 示例 | 说明 | ||
| `()` | 分组,用于捕获匹配内容 | `(abc)+` | 匹配 "abc", "abcabc" 等 | ||
| ` | ` | 或,表示多个选项中的任意一个 | `cat | dog` | 匹配 "cat" 或 "dog" |
| `[]` | 字符集合,匹配其中任意一个字符 | `[aeiou]` | 匹配任意一个元音字母 | ||
| `[^...]` | 匹配不在集合中的字符 | `[^aeiou]` | 匹配任意一个非元音字母 |
三、修饰符(标志)
| 标志 | 含义 | 示例 | 说明 |
| `re.IGNORECASE` 或 `i` | 忽略大小写 | `re.search('hello', 'HELLO', re.I)` | 匹配 "HELLO" |
| `re.MULTILINE` 或 `m` | 多行模式,`^` 和 `$` 匹配每一行的开始和结束 | `re.findall('^line', text, re.M)` | 匹配每行的开头 |
| `re.DOTALL` 或 `s` | 使 `.` 匹配包括换行符在内的所有字符 | `re.search('a.b', 'a\nb', re.S)` | 匹配 "a\nb" |
| `re.VERBOSE` 或 `x` | 允许在正则表达式中添加注释,提高可读性 | `re.compile(r'pattern 注释')` | 便于复杂正则的阅读 |
四、常用函数
| 函数 | 功能 | 示例 |
| `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'old', 'new', 'this is old')` → `'this is new'` |
| `re.split()` | 按匹配项分割字符串 | `re.split(r'\s+', 'split this string')` → `['split', 'this', 'string']` |
五、实际应用示例
示例1:提取电话号码
```python
import re
text = "Phone: 123-456-7890"
match = re.search(r'\d{3}-\d{3}-\d{4}', text)
print(match.group()) 输出: 123-456-7890
```
示例2:验证邮箱格式
```python
def is_valid_email(email):
pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$'
return re.match(pattern, email) is not None
```
示例3:替换敏感词
```python
text = "This is a bad word."
cleaned = re.sub(r'bad', '', text)
print(cleaned) 输出: This is a word.
```
总结
正则表达式是Python中处理文本的强大工具,掌握其基本语法和常用函数可以极大提升文本处理效率。本文通过表格形式整理了常见的正则表达式符号、分组方式、修饰符以及相关函数,帮助初学者快速入门并灵活应用。在实际开发中,建议结合具体需求选择合适的正则表达式结构,并注意测试和调试,确保匹配结果符合预期。


