博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第九章 前后查找
阅读量:5061 次
发布时间:2019-06-12

本文共 877 字,大约阅读时间需要 2 分钟。

9.1 前后查找
用正则表达式标记要匹配的文本的位置(而不仅仅是文本本身)。
前后查找(lookaround),对某一位置的前、后内容进行查找。
 
例子:把一个web页面的页面标题提取出来。
?<=\<[tT][iI][tT][lL][eE]>.*?=</[tT][iI][tT][lL][eE]>
 
 
9.2 向前查找(正向前查找positive kookahead)
向前查找指定了一个必须匹配但不在结果中返回的模式。
 
?=将向前查找(查找出现在被匹配文本之后的字符,但不消费这个字符)。
一个向前查找的其实就是一个以?=开头的子表达式,需要匹配的文本跟在=以后。
 
例子:把URL中协议名部分提取出来(为下一步处理做准备)。
.+(?=:)
只要匹配到:就可以了,但不出现在匹配的结果里,用术语表达就是“不消费”。
 
备注:向前查找(或向后查找)匹配本身其实是有返回结果的,知识这个结果的字节长度永远是0而已。
因此,前后查找操作有时也被称为零宽度(zero-width)匹配操作。
 
提示:任何一个子表达式都可以转换为一个向前查找表达式,只要给它加上一个?=前缀即可。
在同一个搜索模式里可以使用多个向前查找表达式,他们可以出现在模式里的任意位置。
 
 
9.3 向后查找(正向后查找positive lookbehind)
?<=向后查找,查找出现在被匹配文本之前的字符(但不消费它。)
 
备注:向前查找模式的长度是可变的,它们可以包含.和+之类的元字符,非常灵活。
而向后查找模式只能是固定长度,这是一条几乎所有正则比到达时实现都遵循的限制。(不是所有的语言都支持向后查找)
 
 
9.4 把向前和向后查找结合起来
向前和向后查找可以组合在一起使用。
 
9.5 对前后查找取非
负向前查找(negative lookahead)将向前查找不与给定模式相匹配的文本。?!
负向后查找(negative lookbehind)将向后查找不与给定模式相匹配的文本。?<!
 
 
 
 

转载于:https://www.cnblogs.com/mumulin99/p/9838557.html

你可能感兴趣的文章
发送请求时params和data的区别
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
如何增强你的SharePoint 团队网站首页
查看>>
FZU 1914 Funny Positive Sequence(线性算法)
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
MySQL服务读取参数文件my.cnf的规律研究探索
查看>>
java string(转)
查看>>
__all__有趣的属性
查看>>
写博客
查看>>
利用循环播放dataurl的视频来防止锁屏:NoSleep.js
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
ios封装静态库技巧两则
查看>>
Educational Codeforces Round 46 (Rated for Div. 2)
查看>>
Abstract Factory Pattern
查看>>
C# 实现Bresenham算法(vs2010)
查看>>
基于iSCSI的SQL Server 2012群集测试(一)--SQL群集安装
查看>>