【基础】字符串操作与正则表达式
发布时间: 2024-06-27 15:16:34 阅读量: 71 订阅数: 106
字符串、字符和正则表达式
![【基础】字符串操作与正则表达式](https://pic3.zhimg.com/80/v2-ff7219d40ebe052eb6b94acf9c74d9d6_1440w.webp)
# 1. 字符串操作**
字符串操作是计算机科学中一项基本任务,涉及对文本数据的操作。Python 提供了丰富的字符串操作函数,使我们能够轻松地执行各种文本处理任务。
这些函数包括:
- `str.upper()`:将字符串转换为大写
- `str.lower()`:将字符串转换为小写
- `str.capitalize()`:将字符串的首字母大写,其余字母小写
- `str.strip()`:移除字符串两端的空白字符
- `str.replace()`:用指定字符串替换另一个字符串
# 2. 正则表达式基础
### 2.1 正则表达式的语法和元字符
正则表达式是一种用于匹配字符串模式的强大工具。它由一系列字符组成,这些字符具有特定的含义,用于定义要匹配的模式。正则表达式的语法包括:
- **元字符:**具有特殊含义的字符,如 `.`(匹配任何字符)、`*`(匹配零次或多次)和 `+`(匹配一次或多次)。
- **字符类:**使用方括号括起来的字符组,匹配组内的任何字符,如 `[abc]`(匹配 a、b 或 c)。
- **转义字符:**使用反斜杠 (`\`) 转义特殊字符,使其失去特殊含义,如 `\.`(匹配句点)。
- **量词:**指定匹配次数的符号,如 `?`(匹配零次或一次)、`*`(匹配零次或多次)和 `+`(匹配一次或多次)。
### 2.2 正则表达式的模式匹配
正则表达式用于在字符串中匹配模式。匹配过程遵循以下规则:
- **从左到右:**正则表达式从字符串的开头开始匹配。
- **贪婪匹配:**正则表达式默认采用贪婪匹配,即匹配尽可能多的字符。
- **回溯:**如果匹配失败,正则表达式将回溯到上一个匹配点,并尝试不同的匹配方式。
**示例:**
```
正则表达式:.*
字符串:Hello, world!
匹配结果:Hello, world!
```
在这个示例中,正则表达式 `.*` 匹配任意数量的字符,因此它匹配了整个字符串。
**代码块:**
```python
import re
pattern = "Hello, world!"
string = "Hello, world!"
match = re.match(pattern, string)
if match:
print("匹配成功!")
```
**逻辑分析:**
这段代码使用 `re.match()` 函数在字符串中匹配正则表达式模式。如果匹配成功,则打印 "匹配成功!"。
**参数说明:**
- `re.match()` 函数:用于在字符串开头匹配正则表达式模式。
- `pattern`:要匹配的正则表达式模式。
- `string`:要匹配的字符串。
# 3.1 正则表达式的分组和引用
**分组和引用**
正则表达式支持分组和引用,这使得我们能够匹配和捕获子字符串。分组使用圆括号 `()` 表示,而引用使用反斜杠 `\` 和数字表示。
**分组**
分组允许我们匹配一个子字符串并将其存储在内存中,以便以后引用。例如,以下正则表达式匹配一个包含数字的字符串:
```
(\d+)
```
它将捕获数字并将其存储在组 1 中。
**引用**
引用允许我们使用分组捕获的子字符串。例如,以下正则表达式匹配一个以数字开头并以相同数字结尾的字符串:
```
^(\d+)\1$
```
它将捕获数字并将其存储在组 1 中,然后使用引用 `\1` 来匹配相同的数字。
**示例**
考虑以下字符串:
```
John Doe, 123 Main Street, Anytown, CA 12345
```
我们可以使用以下正则表达式来匹配邮政编码:
```
(\d{5})
```
它将捕获邮政编码并将其存储在组 1 中。然后,我们可以使用以下正则表达式来匹配城市和州:
```
.*,\s+(\w+),\s+(\w{2})
```
它将捕获城市并将其存储在组 2 中,将州捕获并将其存储在组 3 中。
### 3.2 正则表达式的贪婪和懒惰匹配
**贪婪匹配**
默认情况
0
0