1.子表达式

将几个字符的组合形式看做一个大的字符,例如匹配IP地址,形如 127.0.0.1
答案一:p1='\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
pattern1 = re.compile(p1)
测试数据:aa='127.0.0.1'或'.tyw127.0.0.1rceaa'或'1.2.tyw127.0.0.1rceaa'
re.search(pattern1,aa).group(0)
结果:'127.0.0.1'
pattern1.findall(aa)
结果:['127.0.0.1']
 
答案二:p1='(\d{1,3}\.){3}\d{1,3}'
pattern1 = re.compile(p1)
aa='1.2.tyw999.000.3.4.5.6rceaa'
re.search(pattern1,aa).group(0)
结果:'999.000.3.4'
pattern1.findall(aa)
结果:['3.']

2.向前向后查找

举例一:p1 = r"(?<=<h1>).+?(?=</h1>)"
第一个?<=表示在被匹配字符前必须得有<h1>,后面的?=表示被匹配字符后必须有</h1>
简单来说,p = r"(?<=A)XX(?=B)" 匹配的是AXXB这样的字符串中的XX
 
举例二:p1 = r"(?<={0}).+?(?=\n)".format('Undistort Flag: ')
    pattern1 = re.compile(p1)                         #编译正则表达式
    matcher1 = re.search(pattern1, output)  #在源文本中搜索符合正则表达式的部分
    rtv_lag = matcher1.group(0)
    print '~~~~~~~~`',rtv_lag
 
向前查找向后查找不必同时出现,也可以只满足一个条件。只要记住?<=后面跟着的是前缀要求,?=后面跟的是后缀要求即可。

3.回溯引用

回溯引用是一个动态的正则表达式,让你根据实际情况进行匹配。
例如想要匹配HTML页面中<h1></h1>到<h6></h6>中的内容,如果简单地使用表达式p = r"<h[1-6]>.*?</h[1-6]>"可能会匹配出多余的标签为<h1>hello world</h3>的数据;针对这种情况,我们需要在匹配到第一个子表达式时获取到匹配到的值,需要可以使用回溯引用。
答案:p1 = r"<h([1-6])>.*?</h\1>"
其中,第二个子表达式中出现了\1,这里的1表示第一个子表达式,它是动态的,随着前面第一个子表达式的匹配到的东西而变化的。比如前面的子表达式内是[1-6],在实际字符串中找到了1,那么后面的\1就是1,如果前面的子表达式在实际字符串中找到了2,那么后面的\1就是2。
类似的,\2,\3,....就代表第二个第三个子表达式。

参考:https://www.cnblogs.com/chuxiuhong/p/5907484.html

python 正则表达式 中级的更多相关文章

  1. Python 正则表达式中级

    首先是?:   在括号中用?:用在findall和split之中,去除括号优先级. 如果不用只输出括号内匹配的值 r   的作用是转义python里面换行符等,像是\n 不用加\来转义 1.子表达式 ...

  2. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  3. 转载 Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  4. Python 正则表达式入门(初级篇)

    Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...

  5. python正则表达式入门篇

    文章来源于:https://www.cnblogs.com/chuxiuhong/p/5885073.html Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. ...

  6. Python正则表达式中的re.S

    title: Python正则表达式中的re.S date: 2014-12-21 09:55:54 categories: [Python] tags: [正则表达式,python] --- 在Py ...

  7. python正则表达式re

    Python正则表达式: re 正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可 ...

  8. Python正则表达式详解

    我用双手成就你的梦想 python正则表达式 ^ 匹配开始 $ 匹配行尾 . 匹配出换行符以外的任何单个字符,使用-m选项允许其匹配换行符也是如此 [...] 匹配括号内任何当个字符(也有或的意思) ...

  9. 比较详细Python正则表达式操作指南(re使用)

    比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...

随机推荐

  1. 3.2-3 tac、more

    3.2 tac命令 是cat的反向拼写,因此命令的功能为反向显示文件内容.cat命令是从第一行开始读取文本输出的,而tac则是从最后一行开始读取文本并进行反向输出,需要注意的是,2个命令都是以一行文本 ...

  2. 【JDK命令行 一】手动编译Java源码与执行字节码命令合集(含外部依赖引用)

    写作目标 记录常见的使用javac手动编译Java源码和java手动执行字节码的命令,一方面用于应对 Maven 和 Gradle 暂时无法使用的情况,临时生成class文件(使用自己的jar包):另 ...

  3. Stream中的Peek操作

    1.引言 如果你试图对流操作中的流水线进行调试, 了解stream流水线每个操作之前和操作之后的中间值, 该如何去做? 首先我们看一个例子, 使用forEach将流操作的结果打印出来. 1 /** 2 ...

  4. gin使用validator库参数校验若干实用技巧

    validator库参数校验若干实用技巧 本文介绍了使用validator库做参数校验的一些十分实用的使用技巧,包括翻译校验错误提示信息.自定义提示信息的字段名称.自定义校验方法等. validato ...

  5. maxscrip_import_csv_构建对象

    3DMAX通过脚本文件批量操作相当有效率,国内关于maxscript的资料比较少,知识点比较零散,逐步进行补充. 导入文件: filepath = "... Data\\01_us.csv& ...

  6. 实时实例分割的Deep Snake:CVPR2020论文点评

    实时实例分割的Deep Snake:CVPR2020论文点评 Deep Snake for Real-Time Instance Segmentation 论文链接:https://arxiv.org ...

  7. nvGRAPH原理概述

    nvGRAPH原理概述 nvGRAPH的API参考分析. 简介 数据分析是高性能计算的不断增长的应用.许多高级数据分析问题可以称为图形问题.反过来,当今许多常见的图形问题也可以称为稀疏线性代数.这是N ...

  8. 视频系列:RTX实时射线追踪(下)

    视频系列:RTX实时射线追踪(下) Key things from part 4 光线有效载荷是从一个着色器传递到另一个着色器的结构. 这一切都发生在RTX的引擎下. 更小的有效载荷要好得多! 新的D ...

  9. 瞎搞!你真的懂什么是ERP、中台和低代码吗?

    欢迎关注微信公众号:sap_gui (ERP咨询顾问之家) 互联网信息圈就是这样,写个不知所云的文章,再配上博眼球的标题,立马引来众多围观,不少公众号也蜂拥转载,完全不去思考文章写得对不对,有没有道理 ...

  10. sql 数据库使用注意事项

    1.在对数据库表进行操作时,一定要注意当前操作的是哪一个数据库,否则很容易引起不必要的错误.对于master数据库中的数据文件,尽量不要去对其操作. 2.可通过图形方式对数据库进行备份操作,可通过数据 ...