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

Python之re模块

Python 的 re 模块提供了对正则表达式的支持,允许你进行复杂的字符串搜索、替换和解析操作。正则表达式(Regular Expressions)是一种强大的文本处理工具,使用一种特定的语法模式来描述在搜索文本时要匹配的一个或多个字符串。

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

  1. 编译正则表达式

    import re
    
    pattern = re.compile(r'\d+')  # 匹配一个或多个数字
    
  2. 搜索字符串

    • re.search(pattern, string, flags=0): 搜索字符串中第一次出现正则表达式模式的位置,返回一个匹配对象(Match object),否则返回 None

      match = re.search(r'\d+', 'abc123def456')
      if match:
          print(match.group())  # 输出: 123
      
  3. 匹配整个字符串

    • re.match(pattern, string, flags=0): 尝试从字符串的起始位置匹配正则表达式模式,如果匹配成功返回一个匹配对象,否则返回 None

      match = re.match(r'\d+', '123abc')
      if match:
          print(match.group())  # 输出: 123
      
  4. 查找所有匹配项

    • re.findall(pattern, string, flags=0): 查找字符串中所有与正则表达式模式匹配的非重叠匹配项,返回一个列表。

      matches = re.findall(r'\d+', 'abc123def456ghi789')
      print(matches)  # 输出: ['123', '456', '789']
      
  5. 查找所有匹配项及其位置

    • re.finditer(pattern, string, flags=0): 查找字符串中所有与正则表达式模式匹配的非重叠匹配项,返回一个迭代器,每个迭代元素是一个匹配对象。

      matches = re.finditer(r'\d+', 'abc123def456ghi789')
      for match in matches:
          print(match.group(), match.start(), match.end())
          # 输出:
          # 123 3 6
          # 456 9 12
          # 789 15 18
      
  6. 字符串替换

    • re.sub(pattern, repl, string, count=0, flags=0): 使用 repl 替换字符串中与正则表达式模式匹配的所有子串。count 用于指定最大替换次数。

      new_string = re.sub(r'\d+', 'NUM', 'abc123def456ghi789')
      print(new_string)  # 输出: abcNUMdefNUMghiNUM
      
  7. 字符串分割

    • re.split(pattern, string, maxsplit=0, flags=0): 根据正则表达式的模式分割字符串,返回一个列表。maxsplit 用于指定最大分割次数。

      parts = re.split(r'\d+', 'abc123def456ghi789')
      print(parts)  # 输出: ['abc', 'def', 'ghi', '']
      
  8. 获取匹配对象的详细信息

    • 匹配对象(Match object)提供了多个方法和属性来获取匹配详情,如 group(), start(), end(), groups() 等。

      match = re.search(r'(\d+)-(\d+)-(\d+)', 'Order-123-2023-01')
      if match:
          print(match.group(0))  # 整个匹配的字符串: 123-2023-01
          print(match.group(1))  # 第一个括号中的匹配: 123
          print(match.group(2))  # 第二个括号中的匹配: 2023
          print(match.group(3))  # 第三个括号中的匹配: 01
      

常用标志(Flags)

  • re.IGNORECASEre.I: 忽略大小写。
  • re.MULTILINEre.M: 多行模式,改变 ^$ 的行为。
  • re.DOTALLre.S: 让 . 匹配包括换行符在内的任意字符。
  • re.VERBOSEre.X: 通过允许你在正则表达式字符串中使用空白和注释来使其更具可读性。

示例

import re

# 忽略大小写匹配
match = re.search(r'hello', 'Hello World', re.IGNORECASE)
if match:
    print(match.group())  # 输出: Hello

# 多行模式匹配
text = """First Line
Second Line
Third Line"""
match = re.search(r'^Second', text, re.MULTILINE)
if match:
    print(match.group())  # 输出: Second Line

# 让 . 匹配换行符
text = "First Line\nSecond Line"
match = re.search(r'.*', text, re.DOTALL)
if match:
    print(match.group())  # 输出: First Line\nSecond Line

re 模块是 Python 中处理字符串的强大工具,通过学习和实践正则表达式,你可以高效地处理和分析文本数据。

相关文章:

  • 【HarmonyOS Next】鸿蒙状态管理装饰器V1和V2混用方案
  • 【Linux】进程间通信——命名管道
  • ONNX转RKNN的环境搭建
  • 计算机毕设-基于springboot的融合多源高校画像数据与协同过滤算法的高考择校推荐系统的设计与实现(附源码+lw+ppt+开题报告)
  • STM32 物联网智能家居 (七) 设备子系统--风扇控制
  • 以太坊测试网
  • 学术ppt模板_院士增选_自然科学奖_技术发明奖_科技进步奖_杰青_长江学者特聘教授_校企联聘长江学者_重点研发_优青_青长_青拔ppt制作案例
  • Spring Boot中Bean Validation的实战应用
  • flutter项目构建常见问题
  • 【前端基础】Day 3 CSS-2
  • Cherno 游戏引擎笔记(91~111)
  • Ubuntu2204下使用NVIDIA GeForce RTX 4090进行DeepSeek-R1-Distill-Llama-8B模型微调
  • SpringDataJPA使用deleteAllInBatch方法逻辑删除失效
  • 智能体编排与AI工作流的区别
  • SpringBoot整合SpringSecurity、MyBatis-Plus综合实例:认证、授权
  • Java面试要点120 - Java虚拟机栈帧结构
  • JavaScript 指南:从入门到实战开发
  • 如何使用useContext进行全局状态管理?
  • Polardb开发者大会
  • 深度解读 Chinese CLIP 论文:开启中文视觉对比语言预训练
  • 郑州直销网站制作/开通网站需要多少钱
  • 大连金州/太原建站seo
  • asp文件怎么做网站/公司企业网站建设方案
  • 怎么做网站收广告费/全网营销国际系统
  • 长沙网站seo诊断/百度非企渠道开户
  • 无锡专业网站建设公司/深圳seo优化外包