python re模块 详解

re 模块是 Python 中用于处理正则表达式的标准库。正则表达式是一种强大的字符串匹配和处理工具,可以用来查找、替换、分割字符串等。下面是 re 模块的详细介绍,包括常用函数和方法。

1、导入模块

python 复制代码
import re

2、常用函数

2.1、re.compile(pattern, flags=0)

  • 编译正则表达式模式,返回一个模式对象。
  • pattern:正则表达式的字符串形式。
  • flags:可选,标志位,用于修改正则表达式的行为。

2.1、re.match(pattern, string, flags=0)

  • 尝试从字符串的起始位置匹配一个模式。
  • pattern:正则表达式的字符串形式。
  • string:要匹配的字符串。
  • flags:可选,标志位。

2.3、re.search(pattern, string, flags=0)

  • 搜索字符串中第一次出现的模式。
  • pattern:正则表达式的字符串形式。
  • string:要搜索的字符串。
  • flags:可选,标志位。

2.4、re.findall(pattern, string, flags=0)

  • 查找字符串中所有非重叠的模式,返回一个列表。
  • pattern:正则表达式的字符串形式。
  • string:要查找的字符串。
  • flags:可选,标志位。

2.5、re.finditer(pattern, string, flags=0)

  • 查找字符串中所有非重叠的模式,返回一个迭代器。
  • pattern:正则表达式的字符串形式。
  • string:要查找的字符串。
  • flags:可选,标志位。

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

  • 使用 repl 替换字符串中所有匹配 pattern 的子串。
  • pattern:正则表达式的字符串形式。
  • repl:替换的字符串或一个函数。
  • string:要处理的字符串。
  • count:可选,替换的最大次数,默认 0 表示替换所有匹配。
  • flags:可选,标志位。

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

  • 根据模式分割字符串,返回一个列表。
  • pattern:正则表达式的字符串形式。
  • string:要分割的字符串。
  • maxsplit:可选,最大分割次数,默认 0 表示分割所有匹配。
  • flags:可选,标志位。

3、常用标志位

  • re.IGNORECASE 或 re.I:忽略大小写。
  • re.MULTILINE 或 re.M:多行模式,影响 ^ 和 $。
  • re.DOTALL 或 re.S:使 . 匹配包括换行在内的所有字符。
  • re.UNICODE 或 re.U:根据 Unicode 字符集解析字符。
  • re.VERBOSE 或 re.X:允许正则表达式中包含空格和注释。

4、示例

python 复制代码
import re

# 编译正则表达式
pattern = re.compile(r'\d+')

# 匹配
match = pattern.match('123abc')
if match:
    print(match.group())  # 输出: 123

# 搜索
search = pattern.search('abc123')
if search:
    print(search.group())  # 输出: 123

# 查找所有
findall = pattern.findall('abc123def456')
print(findall)  # 输出: ['123', '456']

# 替换
sub = pattern.sub('NUMBER', 'abc123def456')
print(sub)  # 输出: abcNUMBERdefNUMBER

# 分割
split = pattern.split('abc123def456')
print(split)  # 输出: ['abc', 'def', '']

以上是 re 模块的基本用法和常用函数的介绍。正则表达式是一个非常强大的工具,掌握它可以大大提高字符串处理的效率和灵活性。

相关推荐
程序员黄同学16 分钟前
如何使用 Python 连接 MySQL 数据库?
数据库·python·mysql
I_Am_Me_16 分钟前
【JavaEE初阶】线程安全问题
开发语言·python
张叔zhangshu22 分钟前
TensorFlow 的基本概念和使用场景
人工智能·python·tensorflow
运维&陈同学23 分钟前
【Elasticsearch05】企业级日志分析系统ELK之集群工作原理
运维·开发语言·后端·python·elasticsearch·自动化·jenkins·哈希算法
新手小袁_J1 小时前
实现Python将csv数据导入到Neo4j
数据库·python·neo4j·《我是刑警》·python连接neo4j·python导入csv·csv数据集导入neo4j
清风ꦿ1 小时前
neo4j 图表数据导入到 TuGraph
python·neo4j·knowledge graph
ZVAyIVqt0UFji3 小时前
go-zero负载均衡实现原理
运维·开发语言·后端·golang·负载均衡
loop lee3 小时前
Nginx - 负载均衡及其配置(Balance)
java·开发语言·github
SomeB1oody4 小时前
【Rust自学】4.1. 所有权:栈内存 vs. 堆内存
开发语言·后端·rust
toto4124 小时前
线程安全与线程不安全
java·开发语言·安全