正则表达式教程中,前后查找lookaround的用法具体是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计719个文字,预计阅读时间需要3分钟。
原文示例:本文实例讲述了正则表达式教程之前后查找lookaround。分享给家长供家长参考,具体如下:注:在所有例子中,正则表达式匹配结果包含在源文本中的[ ]和[]之间,有的例子会使用Java。
改写后:“本文实例介绍了正则表达式教程的前后查找lookaround。向家长推荐,具体内容如下:注意:在所有示例中,正则表达式匹配结果位于源文本的[ ]和[]之间,部分示例会使用Java。
本文实例讲述了正则表达式教程之前后查找lookaround。分享给大家供大家参考,具体如下:
注:在所有例子中正则表达式匹配结果包含在源文本中的之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明。所有java例子都在JDK1.6.0_13下测试通过。
一、问题引入
在HTML页面中,匹配出一对标签之间的文本,如匹配出页面的标签,即<title>与</title>之间的文本:
文本:<head><TITLE>welcome to my page</title></head>
正则表达式:<[Tt][Ii][Tt][Ll][Ee]>.*?</ [Tt][Ii][Tt][Ll][Ee]>
结果:<head></head>
分析:<[Tt][Ii][Tt][Ll][Ee]>表示不区分大小写,这个模式匹配到了title标签以及它们之间的文本,但是并不完美,因为我们只想要title标签之间的文本,而不包括标签本身。解决这个问题我们就需要用到前后查找(lookaround)。
二、向前查找
向前查找指定了一个必须匹配但不在结果中返回的模式。向前查找实际上就是一个子表达式,它以?=开头,需要匹配的文本跟在=的后面。
看一个匹配出一个URL地址中协议部分的例子:
文本:blog.csdn.net/mhmyqn
正则表达式:.+(?=:)
结果:【blog.csdn.net/mhmyqn
分析:URL地址中协议部分是在:之前的部分,模式.+匹配任意文本,子表达式(?=:)匹配:,但是被匹配到的:并没有出现在结果中。我们使用?=向正则表达式引擎表明,只要找到:就行了,但不包括在最终的返回结果里。这里如果不使用向前匹配(?=:),而是直接使用(:),那么匹配结果就会是tools.jb51.net/regex/javascript
正则表达式在线生成工具:
tools.jb51.net/regex/create_reg
希望本文所述对大家正则表达式学习有所帮助。
本文共计719个文字,预计阅读时间需要3分钟。
原文示例:本文实例讲述了正则表达式教程之前后查找lookaround。分享给家长供家长参考,具体如下:注:在所有例子中,正则表达式匹配结果包含在源文本中的[ ]和[]之间,有的例子会使用Java。
改写后:“本文实例介绍了正则表达式教程的前后查找lookaround。向家长推荐,具体内容如下:注意:在所有示例中,正则表达式匹配结果位于源文本的[ ]和[]之间,部分示例会使用Java。
本文实例讲述了正则表达式教程之前后查找lookaround。分享给大家供大家参考,具体如下:
注:在所有例子中正则表达式匹配结果包含在源文本中的之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明。所有java例子都在JDK1.6.0_13下测试通过。
一、问题引入
在HTML页面中,匹配出一对标签之间的文本,如匹配出页面的标签,即<title>与</title>之间的文本:
文本:<head><TITLE>welcome to my page</title></head>
正则表达式:<[Tt][Ii][Tt][Ll][Ee]>.*?</ [Tt][Ii][Tt][Ll][Ee]>
结果:<head></head>
分析:<[Tt][Ii][Tt][Ll][Ee]>表示不区分大小写,这个模式匹配到了title标签以及它们之间的文本,但是并不完美,因为我们只想要title标签之间的文本,而不包括标签本身。解决这个问题我们就需要用到前后查找(lookaround)。
二、向前查找
向前查找指定了一个必须匹配但不在结果中返回的模式。向前查找实际上就是一个子表达式,它以?=开头,需要匹配的文本跟在=的后面。
看一个匹配出一个URL地址中协议部分的例子:
文本:blog.csdn.net/mhmyqn
正则表达式:.+(?=:)
结果:【blog.csdn.net/mhmyqn
分析:URL地址中协议部分是在:之前的部分,模式.+匹配任意文本,子表达式(?=:)匹配:,但是被匹配到的:并没有出现在结果中。我们使用?=向正则表达式引擎表明,只要找到:就行了,但不包括在最终的返回结果里。这里如果不使用向前匹配(?=:),而是直接使用(:),那么匹配结果就会是tools.jb51.net/regex/javascript
正则表达式在线生成工具:
tools.jb51.net/regex/create_reg
希望本文所述对大家正则表达式学习有所帮助。

