2023-03-09
python模块
00
请注意,本文编写于 772 天前,最后修改于 40 天前,其中某些信息可能已经过时。

目录

1. 匹配操作
re.match()
re.search()
re.fullmatch()
2. 查找操作
re.findall()
re.finditer()
3. 替换和分割
re.sub()
re.subn()
re.split()
4. 编译正则表达式
re.compile()
5. 常用正则表达式模式
6. 正则表达式标志
7. 获取匹配对象信息

Python 的 re 模块提供强大的正则表达式操作,用于字符串的匹配、查找、替换等。以下是 re 模块的一些常用操作及示例:

python
import re

1. 匹配操作

re.match()

从字符串的开头开始匹配,返回 Match 对象。如果匹配不成功,返回 None

python
result = re.match(r'\d+', '123abc') # 匹配数字开头 print(result.group()) # 输出: 123

re.search()

搜索整个字符串,返回第一个匹配的 Match 对象。

python
result = re.search(r'\d+', 'abc123xyz') # 搜索字符串中第一个数字部分 print(result.group()) # 输出: 123

re.fullmatch()

要求整个字符串完全匹配,返回 Match 对象。

python
result = re.fullmatch(r'\d+', '123') # 整个字符串是数字 print(result.group()) # 输出: 123

2. 查找操作

re.findall()

返回所有匹配项的列表。

python
result = re.findall(r'\d+', 'abc123xyz456') print(result) # 输出: ['123', '456']

re.finditer()

返回所有匹配项的迭代器,每个项为一个 Match 对象。

python
matches = re.finditer(r'\d+', 'abc123xyz456') for match in matches: print(match.group()) # 输出: 123, 456

3. 替换和分割

re.sub()

替换匹配的字符串,可以指定替换次数。

python
result = re.sub(r'\d+', 'X', 'abc123xyz456') print(result) # 输出: abcXxyzX

re.subn()

类似于 sub(),但返回包含新字符串和替换次数的元组。

python
result = re.subn(r'\d+', 'X', 'abc123xyz456') print(result) # 输出: ('abcXxyzX', 2)

re.split()

按照匹配项分割字符串,返回分割后的列表。

python
result = re.split(r'\d+', 'abc123xyz456') print(result) # 输出: ['abc', 'xyz', '']

4. 编译正则表达式

re.compile()

将正则表达式编译成 Pattern 对象,支持重用和预定义标志。

python
pattern = re.compile(r'\d+') result = pattern.findall('abc123xyz456') print(result) # 输出: ['123', '456']

5. 常用正则表达式模式

  • .:匹配任意单个字符(除换行符)
  • \d:匹配任意数字字符,等价于 [0-9]
  • \D:匹配非数字字符
  • \w:匹配任意字母、数字或下划线字符
  • \W:匹配非字母、数字或下划线字符
  • \s:匹配空白字符(空格、制表符、换行符等)
  • \S:匹配非空白字符
  • ^:匹配字符串开头
  • $:匹配字符串结尾
  • *:匹配前一个字符 0 次或多次
  • +:匹配前一个字符 1 次或多次
  • ?:匹配前一个字符 0 次或 1 次
  • {m,n}:匹配前一个字符 m 到 n 次

6. 正则表达式标志

re 模块提供一些标志,用于调整正则表达式的匹配行为:

  • re.IGNORECASE (re.I):忽略大小写匹配
  • re.MULTILINE (re.M):使 ^$ 匹配每行的开头和结尾
  • re.DOTALL (re.S):使 . 匹配包括换行符在内的所有字符
  • re.VERBOSE (re.X):使表达式更具可读性,允许使用空白和注释

示例:

python
pattern = re.compile(r'hello', re.IGNORECASE) print(pattern.match('Hello')) # 匹配成功,忽略大小写

7. 获取匹配对象信息

使用 Match 对象的方法来获取匹配的详细信息:

  • group():返回匹配的字符串
  • start():匹配开始的位置
  • end():匹配结束的位置
  • span():返回 (start, end) 元组,表示匹配范围
python
match = re.search(r'\d+', 'abc123xyz') print(match.group()) # 输出: 123 print(match.start()) # 输出: 3 print(match.end()) # 输出: 6 print(match.span()) # 输出: (3, 6)

本文作者:皓月归尘

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!