当前位置: 首页 > article >正文

python re模块 详解

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

1、导入模块

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、示例

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


http://www.kler.cn/a/397412.html

相关文章:

  • 【Docker容器】一、一文了解docker
  • vxe-grid table 校验指定行单元格的字段,只校验某个列的字段
  • 无人机检测车辆——多目标检测
  • TCP(下):三次握手四次挥手 动态控制
  • 使用Redis的一些经验总结
  • Flutter:Widget生命周期
  • 在k8s上部署Crunchy Postgres for Kubernetes
  • 流程图图解@RequestBody @RequestPart @RequestParam @ModelAttribute
  • Django的RBAC认证和权限
  • Python + Memcached:分布式应用程序中的高效缓存
  • pytest中的断言:深入解析与实践
  • Net.Core Mvc 添加 log 日志
  • 1、PyTorch介绍与张量的创建
  • 迅睿CMS如何实现文章自动推送百度的便捷方法?
  • 怎样遵守编程规范,减少和控制C++编程中出现的bug?
  • uniapp适配暗黑模式配置plus.nativeUI.setUIStyle适配DarkMode配置
  • phonemizer 获取英文文本句子单词音素 - python实现
  • 智能工厂的设计软件 为了监管控一体化的全能Supervisor 的监督学习 之 序2 架构for认知系统 :机器学习及其行动门上的机器人
  • Gitcode文件历史记录查看和还原
  • 论文解析:基于区块链的去中心化服务选择,用于QoS感知的云制造(四区)
  • C/C++基础知识复习(19)
  • 【Docker容器】一、一文了解docker
  • shell脚本(2)
  • 【分布式】万字图文解析——深入七大分布式事务解决方案
  • 数据结构C语言描述3(图文结合)--双链表、循环链表、约瑟夫环问题
  • 2024智能机器人与自动控制国际学术会议 (IRAC 2024)