本文实例讲述了正则表达式教程之前后查找lookaround。分享给大家供大家参考,具体如下:
注:在所有例子中正则表达式匹配结果包含在源文本中的【和】之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明。所有java例子都在JDK1.6.0_13下测试通过。
一、问题引入
在HTML页面中,匹配出一对标签之间的文本,如匹配出页面的标签,即
与之间的文本:文本:
welcome to my page正则表达式:.*? [Tt][Ii][Tt][Ll][Ee]>
结果:
【welcome to my page】分析:表示不区分大小写,这个模式匹配到了title标签以及它们之间的文本,但是并不完美,因为我们只想要title标签之间的文本,而不包括标签本身。解决这个问题我们就需要用到前后查找(lookaround)。
二、向前查找
向前查找指定了一个必须匹配但不在结果中返回的模式。向前查找实际上就是一个子表达式,它以?=开头,需要匹配的文本跟在=的后面。
看一个匹配出一个URL地址中协议部分的例子:
文本:http://blog.csdn.net/mhmyqn
正则表达式:.+(?=:)
结果:【http】://blog.csdn.net/mhmyqn
分析:URL地址中协议部分是在:之前的部分,模式.+匹配任意文本,子表达式(?=:)匹配:,但是被匹配到的:并没有出现在结果中。我们