前几天给大家分享了Python正则表达式初识(一),介绍了正则表达式中的三个特殊字符“^”、“.”和“*”,感兴趣的伙伴可以戳进去看看,今天小编继续给大家分享Python正则表达式相关特殊字符知识点。

1、特殊字符“$”代表的意思是结尾字符。举个栗子,正则表达式“3$”,表示匹配以3为结尾的字符串。代码演示如下图所示。

正则表达式匹配模式“.*3$”代表以3结尾的任意字符的字符串,很显然匹配的结果和原始字符串是一致的,所以有返回结果。

2、如果将正则表达式匹配模式改为“.*4$”,则表示以4结尾的任意字符的字符串,此时是没有任何的输入结果的,如下图所示。

3、正则表达式特殊字符“?”比较常用,其代表的意思是非贪婪匹配模式。默认情况下,匹配字符串是一种贪婪的匹配,换句话说,默认情况下字符串会根据匹配模式,去匹配最大的长度。

4、下图是一个实例。其中括号代表的是提取字符串的子串,正则表达式会把满足匹配条件的字符串放到括号里边。匹配模式“.*(p.*p).*”代表的意思是:左边的“.* ”的意思是任意字符串,可以是空,也可以是非空的字符串,之后是字符p,中间的“.* ” 的意思也是任意字符串,之后再是一个p,尔后右边的“.* ” 的意思也是任意字符串。目前的逻辑就是将两个p中间的字符串连同p一块取出。

但是其输出的结果却为“pp”,并不是我们想要的“pccccccccccp”结果。原因是正则表达式的贪婪匹配所致,实际上它是反向匹配的,所以从字符串来看,匹配到的结果是“pp”。

5、如果我们使用非贪婪模式,即将匹配模式“.*(p.*p).*”改为模式“.*?(p.*p).*”,在第一“p”之前加个特殊字符“?”,则运行的结果就如下图所示。

可以看到匹配模式已经开始从左边开始进行匹配,答案趋向于我们想要的结果。但是在后面却出现了两个p。原因是后面的那个p未指定其为非贪婪模式,所以后面的那个p仍然是从右边开始反向取值的。

6、接下来,我们继续使用非贪婪模式,即将匹配模式“.*(p.*p).*”改为模式“.*?(p.*?p).*”,在第二“p”之前也加个特殊字符“?”,则运行的结果就如下图所示。

此时可以看到匹配的结果就是我们想要的结果了,原因是此时两个p均采用了非贪婪模式,所以匹配模式,从左到右顺序进行。

7、理解非贪婪模式之后,对于正则表达式的匹配就很好理解了,如下图的结果将返回“pcccp”,非贪婪模式下。

8、下图的结果将返回“pcccpcccccccpppp”,非贪婪模式和贪婪模式共存的情况下。

非贪婪模式在网络爬虫的过程中对于字符串的提取非常重要,务必要理解和掌握。小伙伴们,关于正则表达式的特殊字符“$”和“?”的用法,你们get到了吗?

python正则表达式初识(七)_Python正则表达式初识(二)相关推荐

  1. python正则表达式初识(七)_Python正则表达式初识(七)

    内容提示 对不起,根据本站相关业务调整,本页面内容已永久停止用户浏览! 1.如果您要继续浏览本站,可以点击这里进入本站首页! 2.如果您要继续寻找与此本篇内容相关网页,可以点击这里进入百度搜索! 3. ...

  2. python正则表达式修饰符_python正则表达式,看完这篇文章就够了...

    今天讲什么? 今天以为大学同学微信聊,说最近在看我的公众号,她是国企汽车制造业的,但也要用python进行数据分析...之前看了往期的python字符串操作内容,里面说到了正则表达式,想学习一下... ...

  3. python爬取猫眼_python正则表达式爬取猫眼电影top100

    用正则表达式爬取猫眼电影top100,具体内容如下 #!/usr/bin/python # -*- coding: utf-8 -*- import json # 快速导入此模块:鼠标先点到要导入的函 ...

  4. python如何识别特殊字符_python正则表达式--特殊字符

    正则表达式-特殊表达式含义 正则表达式的字母和数字表示他们自身,但多数字母和数字前加一个反斜杠时会拥有不同的含义. 下面列出了正则表达式模式语法中的特殊元素. 1.普通字符集 1) \w 匹配字母数字 ...

  5. python 正则式替换_python 正则表达式参数替换实例详解

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python ...

  6. python正则表达式花括号_python正则表达式(+ {})(二)

    加号-重复匹配多次 + 表示匹配前面的子表达式一次或多次,不包括0次 比如,还是上面的例子,你要从文本中,选择每行逗号后面的字符串内容,包括逗号本身 但是,添加一个条件,如果逗号后面没有内容,就不要选 ...

  7. python re正则查找_python正则表达式 - re

    1,匹配符号 基本元字符 . : 任意字符,除了\n,flags设置为DOTALL(S)可以让.匹配\n |:逻辑或 \:转义 ():捕获组 空白字符 [\b] : 回退 \f : 换页 \n : 换 ...

  8. python 正则表达式取反,python正则取反_Python正则表达式-基础

    Python正则表达式-基础 python使用正则,需要先引入re模块 import re 匹配符 单个字符表达式 含义 [0-9] 0123456789任意之一 [a-z] 小写字母任意之一 [A- ...

  9. python正则取反_python 正则表达式

    python 正则表达式 一. re 模块用于对python的正则表达式的模式匹配模式描述 ^匹配字符串的开头. $匹配字符串的末尾. .匹配任意字符除了换行符当re.DOTALL标记被指定时则可以匹 ...

最新文章

  1. c#对象集合去重_C# List集合去重操作注意点
  2. 分类模型的评估方法-召回率(Recall)
  3. 隐藏在计算机网卡怎样删除,如何卸载电脑中隐藏的虚拟网卡设备
  4. java动态sql执行数据
  5. 《MySQL——InnoDB与Memory以及临时表》
  6. org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 110; schema_reference.4: 无法读取方案文档
  7. ticketvalidationexception票根不符合目标服务_如何在有效降低企业仓储成本的同时不降低企业的总体服务质量目标水平?...
  8. 系统启动 之 Linux系统启动概述(2)
  9. 基于C++与VS2012的HDF5文件处理(一)
  10. JSON DATE 转换标准的一些资料(收集)
  11. BackPropagation_01
  12. 题15 Oracle临时表有几种?临时表和普通表主要区别是什么?
  13. Exp4 恶意代码分析 20154328 常城
  14. 基于五种机器算法的信用风险评估
  15. NOIP总结与反思及对今后的期望
  16. python窗口截图快捷键_windows下实现快捷键截图小工具
  17. Java 八皇后游戏
  18. muti-thread fork
  19. 什么决定你的江湖地位
  20. 杭电计算机考研失败,2020杭电计算机考研感想

热门文章

  1. 大学c语言程序设计期末考试试卷,大学大一c语言程序设计期末考试试卷及答案.doc...
  2. android开发出现的错误,android 开发 错误集锦
  3. redhat7.1安装mysql_redhat7.1 安装mysql 5.7.10步骤详解(图文详解)
  4. linux下des加密命令,linux下的DES加密
  5. 中震弹性计算_众值烈度、中震烈度、大震烈度及三水准二阶段
  6. 苹果内存不够怎么办_当我们的“内存”不够用时,该怎么办?
  7. C语言课程学籍管理课程书面报告,C语言学籍管理系统课程设计报告书
  8. mfc 算方差函数_什么影响了你的工资?方差分析告诉你
  9. BUUCTF--练习场-- basic--上传文件漏洞经典靶场upload-labs-- Pass1-3(Pass4简单尝试)
  10. idea实用快捷键_idea万能快捷键,你不知道的17个实用技巧!!!