向前查找

概述向前查找就是指定了一个必须匹配但不在结果中返回的模式

语法形式其实就是一个以?= 开头的子表达式,需要被匹配的文本跟在"?"之后

提示

1
2
3
提示 有些正则表达式文档使用术语“消费”(consume)来表述“匹配
和返回文本”的含义。在向前查找里,被匹配的文本不包含在最终返
回的匹配结果里,这被称为“不消费”。

例子

向前查找

分析

1
2
3
4
".+"匹配至少一个字符,这对应着URL的协议名,显然我们也只需要协议名,
并不需要再往后的内容,也是说说我们只要消费协议名,因此
我们就可以使用向前查找,"?=:"匹配到":",但是
并不消费":",也就是不会返回匹配到的结果,

注意

1
2
3
4
5
向前查找(和先后查找)匹配其实本身是有返回结果的,
只不过,
这个结果的返回长度永远是0而已,
因此,前后查找模式有时也被叫做,
零宽度(zero-width)匹配操作

向后查找

语法(?<=)

例子

向后查找

向前查找和向后查找的结合

直接上例子

向前查找和向后查找的结合

1
2
3
4
5
问题解决了。(?<=<[tT][iI][tT][lL][eE]>)是一个向后查找操作,
它匹配(但不消费)<TITLE>;而(?=</[tT][iI][tT][lL][eE]>)是
一个向前查找操作,它匹配(但不消费)</TITLE>。最终返回的匹配
结果包含且仅包含标题文字(用术语来说,就是只有标题文字被消费
了)。