正则表达式(Regular Expression,通常缩写为regex或regexp)是一种强大的文本处理工具,它允许您执行复杂的搜索和替换操作。正则表达式是由一系列字符和特殊符号组成的模式,用来描述您希望匹配的一组字符串。它们被广泛应用于编程语言中,用于字符串搜索、字符串解析、字符串替换等场景。
### 正则表达式的组成部分
正则表达式由以下几个部分组成:
- **普通字符**:直接匹配该字符。例如,`a`匹配"a"。
- **元字符**:具有特殊意义的字符,例如`.`匹配任何单个字符,`*`表示前面的元素零次或多次出现。
- **字符类**:一组放在方括号内的字符,例如`[aeiou]`匹配任何元音字母。
- **量词**:指定前面元素出现的次数,例如`+`表示一次或多次,`?`表示零次或一次。
- **预定义字符类**:如`\d`匹配任何数字,`\w`匹配任何单词字符(字母、数字、下划线)。
- **锚点**:如`^`匹配字符串的开始,`$`匹配字符串的结束。
- **转义符**:反斜杠`\`用于转义特殊字符,如`\.`匹配"."字符本身。
### 正则表达式的基本用法
以下是几个简单的正则表达式例子:
- `cat`:匹配字符串"cat"。
- `.*`:匹配任何字符零次或多次。
- `[abc]`:匹配"a"、"b"或"c"。
- `[^abc]`:匹配除了"a"、"b"或"c"之外的任何字符。
- `\d{3}`:匹配任何三位数字,如"123"。
- `^Hello`:匹配以"Hello"开头的字符串。
- `world$`:匹配以"world"结尾的字符串。
### Python中的正则表达式
在Python中,通过`re`模块可以使用正则表达式。常用的函数包括:
- `re.search(pattern, string)`:扫描整个字符串并返回第一个成功的匹配。
- `re.match(pattern, string)`:尝试从字符串的起始位置匹配一个模式。
- `re.findall(pattern, string)`:返回字符串中所有非重叠匹配的列表。
- `re.sub(pattern, repl, string)`:替换字符串中所有匹配的子串。
例如,查找一个字符串中所有的电子邮件地址:
```python
import re
text = "请发送邮件至 support@example.com 或 helpdesk@example.org 获取更多信息。"
email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
emails = re.findall(email_pattern, text)
print(emails) # 输出: ['support@example.com', 'helpdesk@example.org']
```
正则表达式可以非常强大也非常灵活,因此学习如何编写有效的正则表达式对于文本处理非常重要。随着实践,您会逐渐熟悉其语法和功能。