`
txf2004
  • 浏览: 7041125 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

正则表达式中的反向预搜索

阅读更多

这几天在用正则表达式做一个小程序,需要替换内容中的某些特殊字符串。这些字符串的出现是有规律的,那就是在它左面总会特定的内容出现,右面却没有。于是自然就想到了反向预搜索。

在以前的应用,大多是应用正向预搜索情况。也就是说,在查找内容的右面有特定的内容限定,例如下面的例子:

(.*(?=\;OS\:) 就是典型的正向预搜索,只有右面内容是“;OS: ”才会被匹配到。

但是现在要实现的效果,左面的内容是固定,而不是右面。可是JavaScript并不支持反向预搜索。我相信,细心的朋友已经发现了,其实上面的例子已经达到了这个目的(前面的Memory\:\s+ 限定了左面的内容)。下面再给出一个例子:

那么到底有没有反向预搜索呢?答案是肯定的,可是现实是残酷的。我查阅了一些资料,上面提到反向预搜索的形式是以?<= 或者?<! 为引导的。遗憾的是JavaScript并不支持,在高版本的Java中已获支持,于是就编写了下面的测试程序(JRE1.6.0_03):

程序本身应该没有什么问题,但是运行结果:

Exception in thread "main" java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 27
((?<=\<img.*(?=(http|https)))(http|https))

我Google了半天,最后得到的唯一结果就是换种写法。希望看到这篇文章的朋友,如果已经实现了这种效果,一定要留言不吝赐教。

另外,在我看文档时看到了?:引导的正则表达式,上面说是“匹配不存储”,百思不得其解。感觉还是代码来的实在,写一个看一下:

敏捷开发思想说:代码是最好的文档。给了我借口,呵呵。

分享到:
评论

相关推荐

    正则表达式转换工具

    - 文件搜索:在代码编辑器中,使用正则表达式快速查找和替换特定模式的文本。 - 数据清洗:在数据预处理阶段,正则表达式可以帮助剔除无关字符,整理数据格式。 - 网页抓取:在网络爬虫中,正则表达式用于提取...

    pb 使用正则表达式源码pbregexp

    在PowerBuilder中,正则表达式通常用于数据验证、文本处理、搜索和替换等任务,能够提高代码的灵活性和效率。 正则表达式是一种模式匹配语言,它允许开发者用简洁的语法来描述一组字符串的共同特征。在PowerBuilder...

    正则表达式(Deelx版)|正则表达式(Deelx版)支持库

    正则表达式(Deelx版)是一种强大的文本处理工具,它允许程序员和用户通过预定义的模式来匹配、查找、替换或者分析字符串。Deelx版是专门为提高正则表达式性能和功能而设计的一个支持库,适用于各种编程语言和应用场景...

    C语言正则表达式库

    1. **语法兼容性**:如描述所述,PCRE库的正则表达式语法与Perl语言高度兼容,这意味着开发者可以利用Perl中广泛使用的正则表达式语法,如贪婪和非贪婪量词、分支选择、反向引用等。 2. **Unicode支持**:PCRE库...

    正则表达式生成工具,正则表达式生成工具

    正则表达式(Regular Expression,简称regex)是一种用于匹配字符串的强大工具,广泛应用于文本处理、数据验证、搜索和替换等场景。在编程语言中,正则表达式通常以字符串的形式存在,通过特定的语法和模式来定义...

    精通正则表达式中文版英文版_中文版为扫描版

    在正则表达式的世界里,基础概念包括字符类(如匹配任何数字[\d])、量词(匹配0次或多次*,1次或多次+,至少n次{n}等)、分组与捕获(使用括号()来定义一个子模式)、预查(用^符号否定预查,如[^abc]匹配非abc的...

    正则表达式学习资料以及练习项目代码很多

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。在Python编程语言中,正则表达式提供了强大的文本处理能力,使得开发者能够高效地处理...

    grep、sed、awk、perl等对正则表达式的支持的差别

    Perl的正则表达式功能非常强大,支持大量的高级构造,如正向预查、反向预查、条件表达式等。Perl在处理文本时,不仅可以进行简单的查找替换,还能编写复杂的脚本来完成复杂的文本操作和数据转换。 正则表达式在这些...

    boost库中的正则表达式

    在C++编程中,Boost库是一个非常重要的工具集,提供了许多高级功能,其中包括对正则表达式的支持。Boost库中的正则表达式模块提供了一种高效且强大的方式来处理文本模式匹配。本节将深入探讨Boost库中的正则表达式...

    正则表达式.rar || 正则表达式.rar

    正则表达式,简称为正则,是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索替换。在计算机科学和编程领域,正则表达式是处理文本的基础,广泛应用于数据验证、搜索、替换和提取等多种场景。下面将详细...

    正则表达式(Word)

    正则表达式可以精确地描述用户的需求,并且可以在字符串中搜索和匹配特定的部分。 1. 正则表达式的基本概念 正则表达式是一种记录文本规则的代码,用于描述某些复杂规则的字符串。它可以精确地描述用户的需求,...

    正则表达式教程合集(各种语言的,超全)

    本教程合集涵盖了多种编程语言中的正则表达式规则和应用,包括JavaScript、VB、.NET、Perl等。 在JavaScript中,正则表达式广泛应用于字符串操作,如`match()`、`search()`、`replace()`和`split()`方法。...

    《正则表达式中文手册》

    正则表达式是一种强大而灵活的文本处理工具,广泛应用于多种编程语言中,用于文本的搜索、替换和提取等操作。掌握正则表达式的使用对于任何从事软件开发工作的人员来说都是极其重要的。 #### 二、什么是正则表达式...

    正则表达式实时测试工具(源码)

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。它通过一系列预定义的字符、符号和运算符组合成一个模式,来识别和处理特定格式的字符...

    超好用的正则表达式可视化调试工具

    正则表达式(Regular Expression,简称Regex)是用于匹配字符串的一种强大的模式匹配工具,它在IT行业中被广泛应用于数据提取、文本验证、搜索与替换等多个领域。正则表达式的使用虽然强大,但其语法和逻辑相对复杂...

    彗星正则表达式调试工具

    正则表达式(Regular Expression)是一种强大的文本处理工具,广泛应用于数据验证、文本搜索、替换等多个领域。在编程中,正确编写和理解正则表达式往往是一项挑战,而彗星正则表达式调试工具就是为解决这一问题而...

    正则表达式中文帮助文档.rar

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。它通过一种简洁而强大的语法来定义一系列字符或模式,能够快速有效地处理大量文本数据...

    精通正则表达式05

    在JavaScript中,正则表达式扮演着至关重要的角色,它允许开发者进行复杂的文本操作,如验证输入、搜索和替换文本等。"精通正则表达式05"这一主题,暗示我们将深入学习JavaScript中的正则表达式高级用法,特别是通过...

    正则表达式(里面包含大量的正则表达式)

    正则表达式是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索替换操作。它在编程语言、脚本系统以及各种数据处理场景中广泛应用。正则表达式由字符序列组成,可以用来验证输入是否符合特定规则,或者从...

    正则表达式工具The Regulator

    2. **搜索与替换**:在文本编辑器或编程环境中,正则表达式可用于批量查找和替换特定模式的文本。 3. **数据提取**:在日志分析、网页爬虫等场景下,正则表达式可以帮助我们快速抽取关键信息。 4. **文本处理**:...

Global site tag (gtag.js) - Google Analytics