Python的re.rearch()和group()详解, 及它们的综合使用

2023-10-30

re.search(字符串1,字符串2,flags=0):以列表形式,返回在字符串2中所有匹配到的第一个字符串1,如果无,则返回空列表,其中flag参数一般很少使用
补充:
re.seaech(), re.findall(), re.match 等方法都有第三个参数flags,其为正则表达式修饰符 - 可选标志
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。
多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:

修饰符 描述
re.I 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解

列表.group(num=0),可以理解为获取某个分组内容,group()在正则表达式中与re.search()结合,用于获取分段截获的字符串

例子1:

import re
a = "123abc456"
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0)    #123abc456,返回整体
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1)    #123
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2)    #abc
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3)    #456

分析:
可以看出,正则表达式按照数字-字母-数字的顺序来获取相应字符串,那么分别就是“数字(group(1))–字母(group(2))–数字(group(3))”的对应关系,
其中,group(0)和group()效果相同,均为获取取得的字符串整体。

例子2:

import re
ret=re.search("(?P<name>[a-z]+)\d+","alex36wusir34xialv33").group()#==group(0)
print(ret)
#输出结果:alex36

分析:
一个()是一个组,?P<>表示给组命名,name表示组名,alex为()分的一个组,alex的组名就是name
group()=group(0),便是整体字符串,因为在search中,根据search里的条件,alex36就为一个整体

例子3:

import re
ret=re.search("(?P<name>[a-z]+)\d+","alex36wusir34xialv33").group('name')
print(ret)
#输出结果:alex

分析:
在alex36这个组里查到name这组内容,即alex

例子4:

import re
print(re.search("(?P<name>[a-z]+)(?P<age>\d+)","alex36wusir34xialv33").group())
print(re.search("(?P<name>[a-z]+)(?P<age>\d+)","alex36wusir34xialv33").group('name'))
print(re.search("(?P<name>[a-z]+)(?P<age>\d+)","alex36wusir34xialv33").group('age'))
print(re.search("(?P<name>[a-z]+)(?P<age>\d+)","alex36wusir34xialv33").group(1))
print(re.search("(?P<name>[a-z]+)(?P<age>\d+)","alex36wusir34xialv33").group(2))
#输出结果:
#alex36
#alex
#36
#alex
#36

分析:
整体字符串为alex36,组名为name的组的内容为alex,组名为age的组的内容为36
第一组为alex,第二个组为age

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python的re.rearch()和group()详解, 及它们的综合使用 的相关文章

随机推荐

  • 可转债网格交易策略回测

    什么是网格交易策略 基于股票波动高抛低吸策略 自动化反复买卖赚取差价 投资者借助条件单 把资金分成多份 从基准价开始 每跌x 就自动买入一份 每涨y 就自动卖掉一份 股价越波动高抛低吸的机会越多 什么是交易策略回测 设定了交易策略后 基于历
  • 安卓pos机开发!写给互联网大厂员工的真心话,附带学习经验

    前言 19年6月份从网易云音乐离开 放弃了留学机会 开始了人生的第一次创业 前后尝试了两个项目 因为个人能力与时机因素都失败了 虽然没能享受到创业所能够带来高杠杆物质上的回报 但是对个人软技能和自我边界认知上都有了很大的提升 对于这段经历有
  • [Error] invalid operands of types 'float' and 'int' to binary 'operator%' c错误

    错误提示告诉你 的所有两边 一个是整形 int 一个是浮点型 float 类型不匹配报错 所以你把应该把 其中一个变量定义成整形
  • 前端(node.js)调用dll动态链接库

    壹 需求 使用 js node 调用dll 动态链接库 github地址如下 包含dll 里面就一个Add方法暴露出来 github 贰 两种方式调用dll 当前开发环境 Windows 11 22H2 node v16 20 0 Pyth
  • logback配置日志

    logback的详细介绍网上有很多 http blog csdn net jibaole article details 52442694 参考文档 使用方法 当我们分清了log4j logback和slf4j的关系后 我们就可以使用它们了
  • [701]labelImg标注工具

    labelImg github https github com tzutalin labelImg exe下载 https tzutalin github io labelImg 用于深度网络训练的数据集做标注的方法和工具有好多 像Lab
  • dockerfile基于apline将JDK20打包成镜像

    dockerfile基于apline将JDK20打包成镜像 今天就来和大家聊聊如何把最新出版的JDK20打包成docker镜像 很多uu都会采用centos作为基础镜像 这么做会有一个问题 centos系统会含有很多库文件 这些库文件JDK
  • Visual Studio Code和IntelliJ IDEA运行spring boot项目

    纯前端 没有java经验 要运行一个spring boot项目 根据别人博文运行成功 现整理到本文 以更基础的方式写步骤 参考博文 超详细的VsCode创建SpringBoot项目 图文并茂 yd的博客 CSDN博客 一 Java环境配置
  • Pytorch多GPU训练:DataParallel和DistributedDataParallel

    引言 Pytorch有两种方法实现多GPU训练 分别是DataParallel DP 和DistributedDataParallel DDP DP实现简单 但没有完全利用所有GPU资源 DDP实现相对复杂 但是更快 我建议使用DDP DP
  • bert入门之分词源码解析

    bert编码方法 概括起来 就分词和id映射 我们先看一下分词的两个方法 一 BasicTokenizer 大致流程 转成 unicode gt 去除各种奇怪字符 gt 处理中文 gt 空格分词 gt 去除多余字符和标点分词 gt 再次空格
  • 国内就能用的Chat-GPT分享

    人工智能在语音理解与交互的新里程碑 AI聊天平台 在人工智能 AI 领域 语言模型的发展日新月异 这其中 OpenAI所推出的GPT系列语言模型尤为显眼 尤其是其中的一员 ChatGPT 已经在人工智能的语言理解与交互方面设定了一个新的里程
  • PB安装步骤

    安装PowerBuilder 9 0具体步骤 1 解压压缩包 双击 SETUP 2 点击 Next 3 点击 Yes 4 点击 Next 5 选择好安装到的文件夹 点击 Next 6 选择组件 我只选择PowerBuilder 点击 Nex
  • 如何加载HTML页面页面到另一个界面中

    1 第一种 iframe 但是 对于个人经验来说 iframe最好不要用 不仅自适应不太好 而且对于seo优化特别不好 2 第二种 通过jQuery load 事件加载页面 比较简单 但是会刷新界面 不过个人感觉影响不大 可以return
  • 3、初识程序

    数据结构静态的描述了数据元素之间的关系 高效的程序需要在数据结构的基础上设计和选择算法 高效的程序 恰当的数据结构 合适的算法 算法是特定问题求解步骤的描述 在计算机中表现为指令的有限序列 算法是独立存在的一种解决问题的方法和思想 特性 输
  • 如何开始学习大数据

    最近很多人都想学习大数据开发 但是却不知道如何开始学习 传统的web应用 LAMP JavaEE NODE系等 与大数据什么关系 推荐一个大数据学习群 142973723每天晚上20 10都有一节 免费的 大数据直播课程 专注大数据分析方法
  • 荣耀社招笔试

    荣耀社招笔试题纪录篇 原文链接荣耀社招笔试题 十一放假回家参加了荣耀社招笔试 两道算法题 解析仅供参考 第一题 旋转矩阵 题目描述 给你一幅由 N N 矩阵表示的图像 其中每个像素的大小为 4 字节 请 你设计一种算法 将图像旋转 90 度
  • Linux查看已安装软件版本

    在Linux中 可以使用以下命令来查看软件版本 1 使用命令 软件名 version 来查看软件版本 例如 gcc version 2 使用命令 软件名 v 来查看软件版本 例如 python v 3 使用命令 rpm q 软件名 来查看已
  • idea windows找不到文件chrome

    一 原因分析 浏览器安装的地址有变动 二 解决 1 打开IDEA的设置页面 2 选中setting 找到tools目录下的Web Browsers 3 在电脑桌面上找到谷歌的图标 显示位置不一样 所以根据自身电脑找到谷歌图标 右键单击 gt
  • Generative Modeling by Estimating Gradients of the Data Distribution阅读笔记

    目录 概述 传统score based generative modeling介绍 score matching Langevin dynamics 传统score based generative modeling存在的问题 流形假设上的
  • Python的re.rearch()和group()详解, 及它们的综合使用

    re search 字符串1 字符串2 flags 0 以列表形式 返回在字符串2中所有匹配到的第一个字符串1 如果无 则返回空列表 其中flag参数一般很少使用 补充 re seaech re findall re match 等方法都有