Python正则表达式指南
好的!这里是一份关于 Python 中使用正则表达式的详细指南。
## Python 正则表达式指南
Python 的 `re` 模块提供了正则表达式操作的支持。以下是一些常用的函数和方法:
### 1. 导入模块
```python
import re
```
### 2. 基本函数
#### 2.1 `re.match()`
`re.match()` 从字符串的起始位置进行匹配,如果起始位置匹配成功,则返回匹配对象;否则返回 `None`。
```python
result = re.match(pattern, string)
```
示例:
```python
import re
pattern = r'hello'
string = 'hello world'
result = re.match(pattern, string)
if result:
print("匹配成功")
else:
print("匹配失败")
```
#### 2.2 `re.search()`
`re.search()` 扫描整个字符串并返回第一个成功的匹配。
```python
result = re.search(pattern, string)
```
示例:
```python
import re
pattern = r'world'
string = 'hello world'
result = re.search(pattern, string)
if result:
print("匹配成功")
else:
print("匹配失败")
```
#### 2.3 `re.findall()`
`re.findall()` 返回字符串中所有非重叠匹配的列表。
```python
results = re.findall(pattern, string)
```
示例:
```python
import re
pattern = r'\d+'
string = 'hello 123 world 456'
results = re.findall(pattern, string)
print("匹配的数字:", results)
```
#### 2.4 `re.finditer()`
`re.finditer()` 返回一个迭代器,包含字符串中所有的匹配对象。
```python
results = re.finditer(pattern, string)
```
示例:
```python
import re
pattern = r'\d+'
string = 'hello 123 world 456'
results = re.finditer(pattern, string)
for match in results:
print("匹配的数字:", match.group())
```
#### 2.5 `re.sub()`
`re.sub()` 用于替换字符串中的匹配项。
```python
result = re.sub(pattern, repl, string)
```
示例:
```python
import re
pattern = r'\d+'
repl = '#'
string = 'hello 123 world 456'
result = re.sub(pattern, repl, string)
print("替换后的字符串:", result)
```
### 3. 编译正则表达式
为了提高效率,可以使用 `re.compile()` 将正则表达式编译成模式对象。
```python
pattern = re.compile(pattern)
```
示例:
```python
import re
pattern = re.compile(r'\d+')
string = 'hello 123 world 456'
results = pattern.findall(string)
print("匹配的数字:", results)
```
### 4. 匹配对象的方法
当正则表达式匹配成功时,会返回一个匹配对象(match object)。常用的方法有:
- **group()**:返回整个匹配对象或特定的子组。
- **start()**:返回匹配对象的起始位置。
- **end()**:返回匹配对象的结束位置。
- **span()**:返回匹配对象的起始和结束位置。
示例:
```python
import re
pattern = r'(\d+)-(\d+)-(\d+)'
string = '123-456-789'
match = re.match(pattern, string)
if match:
print("整个匹配对象:", match.group())
print("第一个子组:", match.group(1))
print("第二个子组:", match.group(2))
print("第三个子组:", match.group(3))
print("匹配对象的起始位置:", match.start())
print("匹配对象的结束位置:", match.end())
print("匹配对象的起始和结束位置:", match.span())
```
### 5. 常见模式
- **匹配数字**:`\d` 或 `[0-9]`
- **匹配字母和数字**:`\w` 或 `[a-zA-Z0-9_]`
- **匹配空白字符**:`\s`
- **匹配任意字符**:`.*`
- **匹配邮箱**:`[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}`
- **匹配电话号码**:`(\+\d{1,3}\s?)?\d{10}`
### 总结
Python 的正则表达式功能强大,可以处理各种字符串匹配和替换任务。通过理解和应用上述基本函数和方法,你可以高效地处理复杂的文本数据。如果你有任何问题或需要更多示例,请随时告诉我!