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

最新文章

  1. php概率算法(转)
  2. Mysql中文乱码问题完美解决方案
  3. Linux下安装使用NMON监控、分析系统性能
  4. artDialog ( v 6.0.2 ) content 参数引入页面 html 内容
  5. SSIS -&gt;&gt; Script Task
  6. SVN简明使用方法 .
  7. IISExpress实现外部访问
  8. druid查询
  9. 记录linux tty的一次软锁排查2
  10. H5canvas画类似心电图
  11. [luogu4556][Vani有约会]
  12. lvs负载均衡概述
  13. Redis学习--Redis数据类型
  14. mathML如何在谷歌浏览器进行展示
  15. caffe操作技巧
  16. oracle中sequence(自增序号)的用法
  17. 解决SHAREJPOINT 跨域问题
  18. 慎重使用volatile关键字
  19. Android 耳机插入过程分析 (AudioManager部分)
  20. POJ1251 Jungle Roads (最小生成树&amp;Kruskal&amp;Prim)题解

热门文章

  1. Hutool :一个小而全的 Java 工具类库
  2. 如何在idea中将项目生成API文档(超详细)(Day_32)
  3. centos ping命令找不到服务
  4. [leetcode] 116. 填充同一层的兄弟节点
  5. Pandas之:Pandas高级教程以铁达尼号真实数据为例
  6. THINKPHP_(2)_TP模型的多表关联查询和多表字段的关键字搜索。
  7. Non-Maximum Suppression,NMS非极大值抑制
  8. MindInsight训练可视整体设计介绍
  9. 绘制log()函数图像,并在图上标注选定的两个点
  10. mybatis 实现增删改查(CRUD)