python re库的使用
时间: 2024-12-26 22:25:26 浏览: 0
### 使用 Python `re` 库进行正则表达式操作
#### 导入模块
为了使用正则表达式,在程序中首先要导入 `re` 模块。
```python
import re
```
#### 编译正则表达式对象
创建一个编译后的正则表达式对象,这有助于提高效率特别是当同一个模式被多次使用时[^1]。
```python
pattern = r'\d+' # 定义匹配一位或多位于数字的简单模式
compiled_pattern = re.compile(pattern)
```
#### 查找所有匹配项
利用 `findall()` 方法可以从字符串中找到所有与给定模式相匹配的内容并返回列表形式的结果。
```python
text = "There are 123 apples and 456 oranges."
matches = compiled_pattern.findall(text)
print(matches) # 输出: ['123', '456']
```
#### 替换文本中的内容
如果想要基于某个模式来替换原文本里的部分,则可以调用 `sub()` 函数完成此任务。这里展示了一个简单的例子,即将所有的连续数字替换成单词 “number”。
```python
replacement_text = "number"
new_text = compiled_pattern.sub(replacement_text, text)
print(new_text) # 输出:"There are number apples and number oranges."
```
#### 进行分割操作
除了上述两种常见用途外,还可以借助于 `split()` 来按照指定分隔符拆分字符串。下面的例子展示了怎样依据非字母字符作为边界条件来进行切割工作:
```python
delimiters = r'[\W_]+'
splitted_words = re.split(delimiters, "Hello_World! How's it going?")
print(splitted_words) # 输出:['Hello', 'World', '', "How's", 'it', 'going', '']
```
#### 匹配开头结尾位置
有时可能只关心目标串是否以某特定子序列起始/结束;此时可分别采用 `match()`, 和 `fullmatch()` 或者 `search()` 的方式实现这一目的。前者仅限于判断首部吻合情况而后者能够定位到整个输入流里任意一处符合条件的地方[^2]。
```python
start_with_number = re.match(r'^\d+', "987 six five four")
if start_with_number:
print(f"Starts with a digit: {start_with_number.group()}")
ends_with_word = re.search(r'[a-zA-Z]+$', "one two three.")
if ends_with_word:
print(f"Ends with word: '{ends_with_word.group()}'")
```
阅读全文