2025-03-12
编程
00
请注意,本文编写于 47 天前,最后修改于 47 天前,其中某些信息可能已经过时。

目录

主要功能
常用方法
1. re.compile(pattern, flags=0)
2. re.match(pattern, string, flags=0)
3. re.search(pattern, string, flags=0)
4. re.findall(pattern, string, flags=0)
5. re.sub(pattern, repl, string, count=0, flags=0)
6. re.split(pattern, string, maxsplit=0, flags=0)
标志(flags)
示例

re包是Python的标准库之一,用于处理正则表达式(Regular Expressions)。正则表达式是一种强大的文本处理工具,可以用来进行字符串的搜索、替换等操作。它允许你使用一种特殊语法定义字符串模式,并基于这些模式来查找或修改文本。

主要功能

  • 匹配:检查给定的字符串是否符合某个模式。
  • 搜索:在字符串中查找符合模式的第一个位置。
  • 查找所有:找出字符串中所有与模式匹配的非重叠部分。
  • 替换:将符合模式的部分用指定的字符串替换。
  • 分割:根据模式对字符串进行分割。

常用方法

以下是re模块中一些常用的方法:

1. re.compile(pattern, flags=0)

将一个正则表达式的模式编译成一个正则表达式对象,这样可以在后续多次调用时提高效率。

python
import re pattern = re.compile(r'\d+') result = pattern.findall('There are 24 hours in 1 day.') print(result) # 输出: ['24', '1']

2. re.match(pattern, string, flags=0)

尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,返回None

python
result = re.match(r'\d+', '24 hours in 1 day') if result: print("Matched:", result.group()) # 输出: Matched: 24

3. re.search(pattern, string, flags=0)

扫描整个字符串并返回第一个成功的匹配。

python
result = re.search(r'\d+', '24 hours in 1 day') if result: print("Found:", result.group()) # 输出: Found: 24

4. re.findall(pattern, string, flags=0)

找到字符串中所有与模式匹配的非重叠部分,返回一个列表。

python
result = re.findall(r'\d+', '24 hours in 1 day') print(result) # 输出: ['24', '1']

5. re.sub(pattern, repl, string, count=0, flags=0)

替换字符串中所有与模式匹配的部分为repl

python
result = re.sub(r'\d+', '#', '24 hours in 1 day') print(result) # 输出: # hours in # day

6. re.split(pattern, string, maxsplit=0, flags=0)

根据模式分割字符串,返回分割后的列表。

python
result = re.split(r'\s+', 'Split these words') print(result) # 输出: ['Split', 'these', 'words']

标志(flags)

  • re.IGNORECASEre.I: 忽略大小写。
  • re.MULTILINEre.M: 多行模式,影响^$的行为。
  • re.DOTALLre.S: 使.能匹配包括换行符在内的所有字符。
  • re.VERBOSEre.X: 允许正则表达式被分成多行并且加入注释,增加可读性。

示例

假设我们需要从一段文字中提取所有的电子邮件地址:

python
import re text = "Please contact us at support@example.com or sales@example.org." emails = re.findall(r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+', text) print(emails) # 输出: ['support@example.com', 'sales@example.org']