python 正则表达式 中级
2024-10-19 08:14:03
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
最新文章
- php概率算法(转)
- Mysql中文乱码问题完美解决方案
- Linux下安装使用NMON监控、分析系统性能
- artDialog ( v 6.0.2 ) content 参数引入页面 html 内容
- SSIS ->;>; Script Task
- SVN简明使用方法 .
- IISExpress实现外部访问
- druid查询
- 记录linux tty的一次软锁排查2
- H5canvas画类似心电图
- [luogu4556][Vani有约会]
- lvs负载均衡概述
- Redis学习--Redis数据类型
- mathML如何在谷歌浏览器进行展示
- caffe操作技巧
- oracle中sequence(自增序号)的用法
- 解决SHAREJPOINT 跨域问题
- 慎重使用volatile关键字
- Android 耳机插入过程分析 (AudioManager部分)
- POJ1251 Jungle Roads (最小生成树&;Kruskal&;Prim)题解
热门文章
- Hutool :一个小而全的 Java 工具类库
- 如何在idea中将项目生成API文档(超详细)(Day_32)
- centos ping命令找不到服务
- [leetcode] 116. 填充同一层的兄弟节点
- Pandas之:Pandas高级教程以铁达尼号真实数据为例
- THINKPHP_(2)_TP模型的多表关联查询和多表字段的关键字搜索。
- Non-Maximum Suppression,NMS非极大值抑制
- MindInsight训练可视整体设计介绍
- 绘制log()函数图像,并在图上标注选定的两个点
- mybatis 实现增删改查(CRUD)