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. 5.8-12 watch、which、whereis、locate、updatedb

    5.8 watch:监视命令执行情况 watch命令可以以全屏的方式动态显示命令或程序的执行情况.   -n    命令执行的间隔时间,默认为2s -d    高亮显示命令结果的变动之处 -t     ...

  2. .NET平台系列13 .NET5 统一平台

    系列目录     [已更新最新开发文章,点击查看详细] 时机决定一切,对于 .NET5 也是如此.实际上微软.NET团队在开始开发 .NET Core 时,对 .NET Framework 的全面重写 ...

  3. 微信小程序使用同声传译实现语音识别功能

    我使用同声传译语音识别功能是为了实现微信小程序首页的语音搜索功能,如果你也是那么恭喜你,你可以ctrl+c.ctrl+v再改一改,如果你不是那么你也不要着急的走可以看完我的文章会对你有所帮助! 首先是 ...

  4. Go语言设计模式之函数式选项模式

    Go语言设计模式之函数式选项模式 本文主要介绍了Go语言中函数式选项模式及该设计模式在实际编程中的应用. 为什么需要函数式选项模式? 最近看go-micro/options.go源码的时候,发现了一段 ...

  5. 在Go语言项目中使用Zap日志库

    在Go语言项目中使用Zap日志库 本文先介绍了Go语言原生的日志库的使用,然后详细介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lumberjack实现日志的切割和归档. 在Go语言项 ...

  6. synchronized使用及java中的原子性问题

    1.Synchronized关键字使用 class X { // 修饰非静态方法 synchronized void foo() { // 临界区 } // 修饰静态方法 synchronized s ...

  7. Camera噪声问题

    Camera噪声问题 Camera RGB 域的噪声 以上部分属于sensor processing,接下来的部分属于color.luminance processing. gamma gamma是在 ...

  8. Tengine AIFramework框架

    Tengine AIFramework框架 在开源大势下,以数据.算力.算法为三驾马车的人工智能实现了初级阶段的产业化落地.任何一个技术领域成熟的标志是从应用到平台的成功迭代,AI 也不例外,最终引导 ...

  9. 多目标跟踪:CVPR2019论文阅读

    多目标跟踪:CVPR2019论文阅读 Robust Multi-Modality Multi-Object Tracking  论文链接:https://arxiv.org/abs/1909.0385 ...

  10. 地理围栏API服务开发

    地理围栏API服务开发 要使用华为地理围栏服务API,需要确保设备已经下载并安装了HMS Core(APK),并将Location Kit的SDK集成到项目中. 指定应用权限 如果需要使用地理围栏服务 ...