正则表达式教程中,如何详细理解前后查找lookaround用法?

2026-04-30 01:498阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计640个文字,预计阅读时间需要3分钟。

正则表达式教程中,如何详细理解前后查找lookaround用法?

原文示例:本文字例讲述了正则表达式教程之前后查找lookaround。

改写后内容:本例说明正则表达式中查找前后lookaround的方法。注意:在所有例子中,正则表达式匹配结果包含源文本中的[ ]和|符号。

正则表达式教程中,如何详细理解前后查找lookaround用法?

本文实例讲述了正则表达式教程之前后查找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

希望本文所述对大家正则表达式学习有所帮助。

本文共计640个文字,预计阅读时间需要3分钟。

正则表达式教程中,如何详细理解前后查找lookaround用法?

原文示例:本文字例讲述了正则表达式教程之前后查找lookaround。

改写后内容:本例说明正则表达式中查找前后lookaround的方法。注意:在所有例子中,正则表达式匹配结果包含源文本中的[ ]和|符号。

正则表达式教程中,如何详细理解前后查找lookaround用法?

本文实例讲述了正则表达式教程之前后查找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

希望本文所述对大家正则表达式学习有所帮助。