以下内容由于编辑器的原因,有些是用中文字符代替英文字符
(?=)正向向前查找 (?<=)正向向后查找
(?! )负向向前查找 (?<!)负向向后查找
1.(?=)正向前查找
向前查找指定了一个必须匹配但不在结果中返回的模式。向前查找实际上是一个子表达式,所以要用()括起来。向前查找模式其实就是一个以?=开头的字表达式,需要匹配的文本跟在=的后面。
后面会用到术语“消费”(consume),表示“匹配和返回文本”。在向前查找里,被匹配的文本不包含在最终返回的匹配结果里,这被称为“不消费”
看一个例子
文本 \http://www.baidu.com
正则表达式 .+(?=:)
匹配结果 \http://www.baidu.com
可以看到字表达式(?=:)匹配:,但被匹配的:没有出现在最终的匹配结果里,我们用?=向正则表达式引擎表明:只要找到:就行了,不要把它包括在最终结果里。用术语来说,就是”不消费”它。
2.(?<=)正向后查找
废话不多说,看个例子。
文本 d23.90 d12.32 d12.34 33.33
正则表达式 (?<=d)[0-9.]+
匹配结果 d