Python正则表达式_常用匹配方法findall

2023-11-04

正则匹配方法之findall

核心要点: findall()是将所有匹配到的字符,以列表的形式返回。
如果未匹配,则返回空列表。
一、pattern.findall()方法
语法: findall(string=None, pos=0, endpos=9223372036854775807, *, source=None)
函数作用:
在string[pos,endpos]区间从pos下标开始查找所有满足pattern的子串,直到endpos位置结束,并以列表的形式返回查找的结果,如果未找到则返回一个空列表。
参数说明:
**string:**被匹配的字符串
pos: 匹配的起始位置,可选,默认为0
endpos: 匹配的结束位置,可选,默认为len(string)。也就是说如果不指定pos和endpos的话,该方法会在整个字符串中查找满足条件的子串。

import re 
# 1、正则表达式中无分组
# 查找到正则表达式匹配的前10个字符中的所有数字
pattern=re.compile(r'\d+')
match=pattern.findall('o89ne1two2three3four4',0,10)
print (match)  #返回['89','1','2']

# 2、正则表达式中有1个分组
#查找字符串中所有的数字子串
import re
aa='erd12343.jl34d545fd789'
pattern=re.compile(r'.*?(\d+).*?')
result=pattern.findall(aa)
print (result)   # 返回 ['12343', '34', '545', '789']

# 3、正则表达式中有多个分组
# 提取字符串中所有域名地址
import re
add = 'https://www.net.com.edu//action=?asdfsd and other https://www.baidu.com//a=b'
pattern=re.compile(r'((w{3}\.)(\w+\.)+(com|edu|cn|net))')
result = pattern.findall(add)
print (result)   #返回 [('www.net.com.edu', 'www.', 'com.', 'edu'), ('www.baidu.com', 'www.', 'baidu.', 'com')]

总结如下:
A、无分组时,将所有匹配到的字符,以列表的形式返回
B、正则表达式中只有1个分组(即圆括号)时,返回的列表元素由所有成功匹配表达式中分组内容组成。
C、当正则表达式中含有多个分组时,返回列表中的元素由所有满足匹配的内容组成,但是每个元素都是由表达式中分组内容组成的元组。
二、re.findall()方法
语法: findall(pattern, string, flags=0)
函数作用: 获取字符串中所有能匹配的字符串,并以列表的形式返回。

参数说明:
pattern: 匹配的正则表达式
string: 被匹配的字符串
flags: 标志位,用于控制正则表达式的匹配方式,如是否区分大小写,是否匹配多行等
与pattern.findall()的区别:
不能指定匹配的区间pos和endpos

# 这里只举一个简单的例子,其他的与pattern.findall()原理一样
import re
res = re.findall(r'\w+', 'I am a boy!')
print  (res)   # 返回 ['I', 'am', 'a', 'boy']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python正则表达式_常用匹配方法findall 的相关文章

随机推荐

  • Jenkins pipeline拉取代码超时

    拉取代码报错 using GIT ASKPASS to set credentials gt git fetch tags progress http 192 168 1 8 1234 bi web xxxxxx git refs head
  • Linux学习笔记:win10安装虚拟机

    第一步 打开win10自带的虚拟机 第一步 打开win10自带的虚拟机Hyper V 需要 win10系统 1 点击windows键 e键打开文件资源管理器 右击此电脑 gt 选择属性 gt 打开控制面板 2 选择控制面板主页 gt 选择程
  • 机器人识别抓取笔记(基于视觉的机器人抓取——从物体定位、物体姿态估计到平行抓取器抓取估计:综述)

    Real Time Deep Learning Approach to Visual Servo Control and Grasp Detection for Autonomous Robotic Manipulation 基于视觉的机器
  • el-upload的多文件上传

    el upload实现多文件上传的方法
  • 【C++】第一章:多数据输入时的分隔问题

    在键盘输入多数据时 必须用空格键 Tab键或enter键隔开 不同数据类型的输入 按数据类型读取数据 当用enter键分隔数据时 当用空格键分隔时结果是一样的 多数据错误输入情况 当有与数据类型不匹配的数据时 用空格键分隔 按变量数据类型依
  • vue.js使用props在父子组件之间传参

    prop 组件实例的作用域是孤立的 这意味着不能 也不应该 在子组件的模板内直接引用父组件的数据 要让子组件使用父组件的数据 我们需要通过子组件的 props 选项 子组件要使用 props选项声明它期待获得的数据 官方的解释非常清晰了 两
  • vue进阶04-vue文档生成工具vuepress2

    介绍 VuePress 是一个以 Markdown 为中心的静态网站生成器 你可以使用 Markdown 来书写内容 如文档 博客等 然后 VuePress 会帮助你生成一个静态网站来展示它们 VuePress 诞生的初衷是为了支持 Vue
  • Java中的substring截取字符串方法

    1 问题描述 在处理字符串的过程中有很多情况下会遇到需要截取字符串的情况 这个时候使用Java中提供的substring方法来截取就非常方便了 2 其中比较经常使用到的方法有两个 public String substring int be
  • 安全通用要求之安全通信网络

    安全通信网络 网络架构 业务高峰期 安全要求 需要保证网络设备的业务处理能力满足高峰期的需要 要求解读 了解业务高峰的时间段 核查该时间段内设备的处理能力是否满足 测评方法 确定业务高峰期的时间段 访谈查看网管平台的统计数据 业务高峰期时间
  • 浅谈Android环境开发配置

    经过两个月的java基础学习 个人觉得在搭建开发环境配置方面 Android环境开发比Java环境开发麻烦多了 Java环境配置前面我谈过了 这里就只写写Android的环境开发 Android环境开发需要Android SDK开发包 根据
  • Midjourney V5横空出世:画出完美中国情侣 逼真得令人毛骨悚然

    雷递网 雷建平 3月20日 2023年 AI技术正在加速对人类世界的改变 在ChatGPT的升级版GPT 4横空出世 能玩梗图还能做网页之际 Midjourney V5已正式发布 该服务可以生成逼真的图像 其质量水平被一些AI艺术爱好者称为
  • es7合并数组相关 报错Uncaught (in promise) TypeError: Invalid attempt to spread non-iterable instance. In ...

    方法一 let o1 a 1 b 2 c 3 let o2 o1 d 4 o2 a 1 b 2 c 3 d let arr1 0 1 2 let arr2 arr1 3 arr2 0 1 2 3 方法二 let o1 a 1 b 2 c 3
  • Java的Iterator(迭代器)

    Java迭代器 Iterator 是 Java 集合框架中的一种机制 它提供了一种在不暴露集合内部实现的情况下遍历集合元素的方法 Java Iterator 迭代器 不是一个集合 它是一种用于访问集合的方法 可用于迭代 ArrayList
  • 快速理解ES6的模板字面量?

    let abc 天空 hhh 大地 我们要将字符串和上述的两个变量拼接 并在后续的程序中 输出一个拼接后的字符串 传统实现方式 let testString 我们需要仰望 abc 的理想者 同样也需要脚踏 hhh 的实干派 console
  • 让合作伙伴拥有自己专属的刷脸支付品牌

    刷脸支付OEM合作模式即刷脸支付品牌定制 是行业内专业从事支付系统产品研发 在刷脸支付领域 具备强大的技术开发能力以及服务运营能力的公司 将目前成熟的产品系统框架进行品牌更换 让合作伙伴快速拥有自己专属的刷脸支付品牌 快速拓展市场 做刷脸支
  • Vue 解决路由重复 Uncaught (in promise)错误

    Holle 我是Boy 今天给大家分享一下关于 Vue 解决路由重复 Uncaught in promise 错误 的问题 话不多说直接来看 在脚手架router文件夹的index js写入 1 第一种方法 const routerPush
  • kubelet启动失败

    原因之一 是kubelet cgroup驱动程序 cgroupfs 与docker cgroup驱动程序不同 公司的k8s 新增了一个节点 但kubelet启动一直报错 无法启动 网上找了半天 发现是kubelet cgroup驱动程序 c
  • 机器学习之逻辑回归模型

    1 逻辑回归模型介绍 逻辑回归 Logistic Regression LR 又称为逻辑回归分析 是一种机器学习算法 属于分类和预测算法中的一种 主要用于解决二分类问题 逻辑回归通过历史数据的表现对未来结果发生的概率进行预测 例如 我们可以
  • openglStudySite

    http www learnopengles com android lesson one getting started
  • Python正则表达式_常用匹配方法findall

    正则匹配方法之findall 核心要点 findall 是将所有匹配到的字符 以列表的形式返回 如果未匹配 则返回空列表 一 pattern findall 方法 语法 findall string None pos 0 endpos 92