正则表达式-前后查找
来源:互联网 发布:网络超市好开吗 编辑:程序博客网 时间:2024/05/28 16:13
以下内容由于编辑器的原因,有些是用中文字符代替英文字符
(?=)正向向前查找 (?<=)正向向后查找
(?! )负向向前查找 (?<!)负向向后查找
1.(?=)正向前查找
向前查找指定了一个必须匹配但不在结果中返回的模式。向前查找实际上是一个子表达式,所以要用()括起来。向前查找模式其实就是一个以?=开头的字表达式,需要匹配的文本跟在=的后面。
后面会用到术语“消费”(consume),表示“匹配和返回文本”。在向前查找里,被匹配的文本不包含在最终返回的匹配结果里,这被称为“不消费”
看一个例子
文本 \http://www.baidu.com
正则表达式 .+(?=:)
匹配结果 \http://www.baidu.com
可以看到字表达式(?=:)匹配:,但被匹配的:没有出现在最终的匹配结果里,我们用?=向正则表达式引擎表明:只要找到:就行了,不要把它包括在最终结果里。用术语来说,就是”不消费”它。
2.(?<=)正向后查找
废话不多说,看个例子。
文本 d23.90 d12.32 d12.34 33.33
正则表达式 (?<=d)[0-9.]+
匹配结果 d
可以看到$没有出现在匹配结果里,也不会匹配到33.33。
注意:向前查找模式的长度是可变的,它们可以包含.、、+之类的元字符;而向后查找模式只能是固定长度,不能包含.、、+之类的元字符。
这句话的意思是值:(?<=t+)这种就是非法的!,而(?=t+)是合法的。
刚开始我以为是指子表达式后不能跟* +这种元字符,后来测试了一下发现是这个意思。
3.(?!)负向前查找
向前查找和向后查找通常用来匹配文本,通过指定匹配结果的前后必须是哪些文本来限定匹配结果文本的位置。术语”正“的意思是寻找匹配的事实。所以负向查找中的术语”负”是指不与给定模式向匹配的文本。相当于取非
看个例子
文本 the book cost and the phone cost 1000 2d
正则表达式\d+(?!d)
匹配结果the book cost and the phone cost 1000 2d
可以看到匹配的是不以$开头的数值。
4.(?<!d)负向后查找
举个例子
文本 the d2 wow 30
正则表达式 (?<!d)\d+
匹配结果 the d2 wow 30
5.向前查找向后查找混合使用
举个例子
文本(title)ben hah wowo(/title)
正则表达式 (?<=(title)).*(?=(/title))
匹配结果 (title)ben hah wowo(/title)
测试的过程中发现了一个不理解的例子
文本(title)ben hah wowo(/title)
正则表达式(?<!(title)).*(?!(/title))
匹配结果是 (title)ben hah wowo(/title) 和一个空格
…….待修改
(?<=)与(?=)哪个是前向哪个是后向容易混,可以这样记:<=箭头指向的方向相反。(虽然有点罗嗦,但也算一种方法吧,免得记错)
- 正则表达式-前后查找
- 正则表达式--前后查找
- java正则表达式 前后查找
- 正则表达式-前后查找(六)
- 正则表达式学习(十一)前后查找lookaround
- 靓号正则表达式(前后向查找等) 和 apache正则包使用
- 正则表达式 进阶(二)-- 回溯引用、前后查找、嵌入条件
- Javascript正则表达式查找
- 正则表达式查找
- 正则表达式查找
- 正则表达式查找替换
- 正则表达式-获取查找
- 正则表达式查找表
- java 正则表达式去掉前后空格
- js利用正则表达式去掉前后空格
- Dreamweaver 正则表达式 查找替换
- 正则表达式,查找的功能。
- c# 正则表达式查找字符串
- apt-get命令
- HDU 1034 分糖果 (模拟题)
- js----Date
- 创建React Native 离线 APP的过程
- 登陆拦截 filter() , 字符编码拦截器
- 正则表达式-前后查找
- 出现“MSCOMCTL.OCX或其附件之一不能正确使用:一个文件丢失或无效或'comctl32.ocx'其附件之一不能正确使用:一个文件丢失或无效”的提示的解决办法
- mysql insert操作
- 3GPP 36211-c70-8(内容不太懂)
- 多少个1?(位运算)
- 10011---JavaScript--typeof,null,undefined
- 问题总结
- 为什么说DOM操作很慢
- leetcode -- Maximum Subarray -- 经典问题常考