0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解python正则表达式数量词

python爬虫知识分享 来源:python爬虫知识分享 作者:python爬虫知识分享 2022-03-18 16:05 次阅读

这部分理解一下数量词,为什么要用数量词,想想都知道,如果你要匹配几十上百的字符时,难道你要一个一个的写,所以就出现了数量词。

数量词的词法是:{min,max} 。min 和 max 都是非负整数。如果逗号有而 max 被忽略了,则 max 没有限制。如果逗号和 max 都被忽略了,则重复 min 次。比如,\b[1-9][0-9]{3}\b,匹配的是 1000 ~ 9999 之间的数字( “\b” 表示单词边界),而 \b[1-9][0-9]{2,4}\b,匹配的是一个在 100 ~ 99999 之间的数字。

下面看一个实例,匹配出字符串中 4 到 7 个字母的英文

import re

a = 'java*&39android##@@python'

# 数量词

findall = re.findall('[a-z]{4,7}', a)
print(findall)

输出结果:

['java', 'android', 'python']

注意,这里有贪婪和非贪婪之分。那么我们先看下相关的概念:

贪婪模式:它的特性是一次性地读入整个字符串,如果不匹配就吐掉最右边的一个字符再匹配,直到找到匹配的字符串或字符串的长度为 0 为止。它的宗旨是读尽可能多的字符,所以当读到第一个匹配时就立刻返回。

懒惰模式:它的特性是从字符串的左边开始,试图不读入字符串中的字符进行匹配,失败,则多读一个字符,再匹配,如此循环,当找到一个匹配时会返回该匹配的字符串,然后再次进行匹配直到字符串结束。

上面例子中的就是贪婪的,如果要使用非贪婪,也就是懒惰模式,怎么呢?

如果要使用非贪婪,则加一个 ? ,上面的例子修改如下:

import re

a = 'java*&39android##@@python'

# 贪婪与非贪婪

re_findall = re.findall('[a-z]{4,7}?', a)
print(re_findall)

输出结果如下:

['java', 'andr', 'pyth']

从输出的结果可以看出,android 只打印除了 andr ,Python 只打印除了 pyth ,因为这里使用的是懒惰模式。

当然,还有一些特殊字符也是可以表示数量的,比如:

?:告诉引擎匹配前导字符 0 次或 1 次

+:告诉引擎匹配前导字符 1 次或多次

*:告诉引擎匹配前导字符 0 次或多次

把这部分的知识点总结一下,就是下面这个表了:

贪 婪 惰 性 描 述
?? 零次或一次出现,等价于{0,1}
+ +? 一次或多次出现 ,等价于{1,}
* *? 零次或多次出现 ,等价于{0,}
{n} {n}? 恰好 n 次出现
{n,m} {n,m}? 至少 n 次枝多 m 次出现
{n,} {n,}? 至少 n 次出现

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 字符串
    +关注

    关注

    1

    文章

    553

    浏览量

    20266
  • python
    +关注

    关注

    53

    文章

    4700

    浏览量

    83647
收藏 人收藏

    评论

    相关推荐

    mapgis属性筛选表达式

    篇文章中,我们将详细讨论MapGIS的属性筛选表达式,包括语法、操作符和函数等。 属性筛选表达式是一种在MapGIS中用于指定要素选择条件的代码。它由一组操作符、函数和属性字段组成,用于描述要筛选的要素的特征。在MapGIS中,属性筛选
    的头像 发表于 02-25 10:58 627次阅读

    西门子博途的算术表达式

    算术表达式既可以是一个数字值,也可以是由带有算术运算符的两个值或表达式组合而成。 算术运算符可以处理当前 CPU 所支持的各种数据类型。如果在该运算中有 2 个操作数,那么可根据以下条件来确定结果的数据类型。
    的头像 发表于 01-24 11:36 594次阅读

    你还不会gvim正则表达式?一文搞懂!

    gvim正则表达式常在命令行模式下使用,一般用于文本文件字符串的替换、删除等操作。
    的头像 发表于 01-19 16:47 425次阅读

    更快的tsv解析代码分享

    使用正则解析的正则表达式很简单, 这里直接给代码, 为了避免重复编译正则表达式和重新分配内存报错结果列表, 这里将她们作为参数传给解析函数.
    的头像 发表于 12-29 09:45 209次阅读
    更快的tsv解析代码分享

    GVIM正则表达式介绍和使用示例

    的Ken Thompson借用这个概念并将它应用到了文本编辑器中。后面正则表达式的说法进入到了大家常用的vi、vim、gvim当中。
    的头像 发表于 12-18 15:09 471次阅读
    GVIM<b class='flag-5'>正则表达式</b>介绍和使用示例

    一文详解Java表达式引擎选型

    AviatorScript 是一门高性能、轻量级寄宿于 JVM 之上的脚本语言。AviatorScript 可将表达式编译成字节码。它原来的定位一直只是一个表达式引擎,不支持 if/else 条件
    的头像 发表于 12-06 10:57 850次阅读
    一文<b class='flag-5'>详解</b>Java<b class='flag-5'>表达式</b>引擎选型

    SIMATIC S7-1500 PLC S7-SCL表达式详解

    表达式为了计算一个终值所用的公式,它由地址(变量)和运算符组成。表达式的规则如下。
    的头像 发表于 11-28 09:36 627次阅读
    SIMATIC S7-1500 PLC S7-SCL<b class='flag-5'>表达式</b><b class='flag-5'>详解</b>

    linux正则表达式匹配字符串

    在Linux操作系统中,正则表达式是一种强大的模式匹配工具,它可以用于在文本中查找、替换和筛选特定的字符串。准确掌握正则表达式的语法和常见应用,对于Linux系统的管理员和开发人员来说
    的头像 发表于 11-23 10:26 402次阅读

    什么是正则表达式正则表达式如何工作?哪些语法规则适用正则表达式

    正则表达式又称规则表达式(Regular Expression,在代码中常简写为 regex、regexp 或 RE),是一种用于匹配、查找、替换文本的强大工具。它能够以特定的模式匹配字符串,从而
    的头像 发表于 11-03 14:41 655次阅读
    什么是<b class='flag-5'>正则表达式</b>?<b class='flag-5'>正则表达式</b>如何工作?哪些语法规则适用<b class='flag-5'>正则表达式</b>?

    Java Lambda表达式的新特性

    Java Lambda表达式是Java 8中最重要的新特性之一。 它们是一种可传递的匿名函数,可以作为参数传递给方法或存储在变量中,因此可以在需要的时候调用它们。 基础 1. 简介 Lambda
    的头像 发表于 09-30 10:29 2342次阅读

    怎么去选择使用gm的三种表达式呢?

    我们在写跨导gm的表达式时,知道gm有三种表达式表达式含有的变量其实只有三个,一个W/L,一个Vgs-Vth,还有一个Id。
    的头像 发表于 09-17 15:31 4232次阅读
    怎么去选择使用gm的三种<b class='flag-5'>表达式</b>呢?

    C#模式匹配完全指南

    要使用模式匹配,首先要了解什么是模式。在使用正则表达式匹配字符串时,正则表达式自己就是一个模式,而对字符串使用这段正则表达式进行匹配的过程就是模式匹配。而在代码中也是同样的,我们对对象采用某种模式进行匹配的过程就是模式匹配。
    的头像 发表于 09-13 17:33 307次阅读

    zabbix触发器表达式 基本RS触发器表达式 rs触发器的逻辑表达式

    zabbix触发器表达式 基本RS触发器表达式 rs触发器的逻辑表达式  Zabbix是一款开源的监控软件,它能通过监控指标来实时监测服务器和网络的运行状态,同时还能提供警报和报告等功能来帮助管理员
    的头像 发表于 08-24 15:50 1304次阅读

    如何使用lambda表达式提升开发效率?

    Java8 的一个大亮点是引入 Lambda 表达式,使用它设计的代码会更加简洁。当开发者在编写 Lambda 表达式时,也会随之被编译成一个函数式接口。
    发表于 08-24 10:25 192次阅读

    Python中的正则表达式

    哈喽大家好,我是了不起,今天给大家讲Python中的正则表达式Python中,正则表达式是一种强大的文本处理工具,它可以用来匹配、搜索、替换文本。
    的头像 发表于 06-21 16:52 788次阅读