0 0

正则表达式 零宽断言5

学习正则表达式零宽断言有点晕,看到这么一段

 

 

零宽度正预测先行断言      (?=exp) 匹配exp前面的位置

例:[a-z]*(?=ing) 可以匹配 cooking 和 singing 中的 cook 与 sing 。

注意:先行断言的执行步骤是这样的先从要匹配的字符串中的最右端找到第一个 ing (也就是先行断言中的表达式)然后 再匹配其前面的表达式,

若无法匹配则继续查找第二个 ing 再匹配第二个 ing 前面的字符串,若能匹配则匹配,符合正则的贪婪性。

 

 

这个是可以看懂的,但问题是匹配了这个位置然后怎么用呢?

哪位大神能用java写一个应用的例子看看,谢了!!!

 

 

2014年9月21日 20:14

1个答案 按时间排序 按投票排序

0 0

采纳的答案

用你的例子稍微变化一点来解释:
假如
原始字符串="ainging"
不用正向0宽匹配的正则表达式:/[a-z]ing/
这时候得到的匹配结果是:aing
//a后面有ing,但是因为第一次匹配完事后,aing已经消耗掉了,剩下的ing是不够再匹配[a-z]ing了

使用正向0宽匹配的政策表达式:/[a-z](?=ing)/
得到的匹配结果["a","g"]
//因为a后面也有ing,g后面也有ing

能看出区别了吗?0宽匹配组里面(?=ing)是不消耗匹配字数也不占匹配结果的。

至于用在什么地方还是看你有什么需求了。

2014年9月22日 13:32

相关推荐

    正则表达式 零宽断言

    ### 正则表达式之零宽断言详解 #### 基本概念 正则表达式作为一种强大的文本处理工具,在日常开发中应用广泛。其中,**零宽断言**是正则表达式的一个较为复杂的特性,它允许在不消耗任何字符的情况下对文本中的...

    正则表达式。包括零宽断言,正则替换的150种表达方式

    本文将深入探讨正则表达式的高级应用,特别是零宽断言和正则替换的150种表达方式。 ### 一、零宽断言 零宽断言(Zero-width Assertions)在正则表达式中用于标记位置,但不会消耗任何字符。有两种主要类型:正向零...

    正则表达式零宽断言详解

    正则表达式零宽断言: 零宽断言是正则表达式中的难点,所以本章节重点从匹配原理方面进行一下分析。零宽断言还有其他的名称,例如”环视”或者”预搜索”等等,不过这些都不是我们关注的重点。 一.基本概念: 零宽断言...

    正则表达式大全.docx

    以上给出的正则表达式仅覆盖了一些基础用例,实际的正则表达式可以变得极其复杂,涉及更多的元字符和修饰符,如贪婪与非贪婪匹配、分组、零宽断言等。正则表达式的学习和掌握需要时间和实践,但一旦熟悉,它们将成为...

    源码(精通正则表达式&实战正则表达式)

    2. **断言**:零宽断言如^表示行首,$表示行尾,\b表示单词边界,\B表示非单词边界,(?=pattern)和(?!pattern)分别表示前瞻和反向前瞻断言。 3. **回溯与贪婪与非贪婪匹配**:了解如何控制匹配的范围,避免回溯带来...

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

    3. 零宽断言:与预查类似,零宽断言不会消耗字符,如"^"表示行首,"$"表示行尾,"\b"表示单词边界,"\B"表示非单词边界。 4. 选择器:"|"符号用于表示选择,如"a|b"匹配'a'或'b'。 5. 重复模式:"{n,m}?"(懒惰匹配...

    Excel VBA 正则表达式视频教程

    001_正则表达式初体验.wmv ...020_正则表达式非捕获分组之零宽断言.wmv 021_正则表达式非捕获分组之零宽断言2.wmv 022_正则表达式非捕获分组之负向零宽断言.wmv 023_正则表达式之贪婪与懒惰.wmv 024_正则表达式实例应用

    Python基础入门知识之正则表达式学习 正则表达式30分钟入门教程 共21页.pdf

    零宽断言如`\b`表示单词边界,`\B`表示非单词边界,`(?=...)`和`(?!...)`是前瞻断言,`(?:...)`是无捕获分组。 十五、负向零宽断言 负向零宽断言如`(?<!...)`表示前面不匹配某个模式。 十六、注释 在正则表达式中...

    常用正则表达式 正则表达式

    7. **零宽断言**: - `(?=pattern)`:正向先行断言,检查当前位置后面是否能匹配 pattern,但不消耗字符。 - `(?!pattern)`:负向先行断言,检查当前位置后面不能匹配 pattern。 - `(?)`:正向后行断言,检查当前...

    php正则表达式手册

    此外,还涉及到了正则表达式中的一些特殊结构,如锚点(用于定位字符串的开始和结束)和零宽断言(匹配某些内容但不包含在匹配结果中)。 参考文献部分则为学习者提供了扩展阅读材料,以便更深入地理解正则表达式的...

    正则表达式 正则表达式 正则表达式

    5. **零宽断言**: - **前瞻断言**:如"assert(?=pattern)",匹配"assert"后紧跟着"pattern"的位置,但不包含"pattern"本身。 - **后顾断言**:如"lookbehind(?)",匹配"pattern"前紧跟着的位置,但不包含"pattern...

    正则表达式.CHM

    在这个CHM文件中,我们可以期待找到关于正则表达式的各种详细信息,包括基本概念、语法、特殊字符、预定义字符类、量词、分组、零宽断言、回溯以及更高级的主题。 正则表达式的核心概念包括: 1. 基本元素:如`.`...

    正则表达式入门教程(pdf版

    随着学习的深入,会接触到更复杂的概念,如字符类(class)、分枝条件(branch)、分组(group)、后向引用(backreference)、零宽断言(lookaround)以及贪婪与懒惰匹配(greedy and lazy matching)等。...

    史上最好的正则表达式教程.pdf

    9. 零宽断言:匹配指定位置而不消耗字符,包括正向零宽断言(例如 (?=...))和负向零宽断言(例如 (?<!...)),用于定位条件而不改变字符串。 10. 贪婪与懒惰:正则表达式的匹配默认是贪婪的,尽可能多地匹配字符;...

    正则表达式经典实例

    7. 零宽断言:不消耗字符,但进行断言检查。例如,“(?)bar”会匹配位于“foo”后面的“bar”。 正则表达式在数据验证、文本处理、搜索和替换等场景中极为有用。比如在编写程序时,可以用正则表达式来验证用户输入...

    正则表达式文章和测试工具

    "正则表达式之道之二"和"正则表达式之道之三"可能进一步探讨了更高级的主题,例如后向引用、零宽断言、预查和反向预查等。 在学习过程中,实践是至关重要的,这就是"工具 正则练习兼文本处理器 2_0.htm"的作用。这...

    正则表达式30分钟入门教程-附常用表达式.chm

    7. **零宽断言** - `(?=pattern)`:正向前瞻,匹配后面紧跟pattern的位置。 - `(?!pattern)`:负向前瞻,匹配后面不跟pattern的位置。 - `(?)`:正向后顾,匹配前面紧跟pattern的位置。 - `(?<!pattern)`:负向...

    DEELX 是一个在 C++ 环境下的与 Perl 兼容的正则表达式引擎

    ...)` 分别表示向前和向后零宽断言,用于检查某个位置是否能匹配特定模式,但不消耗字符。 6. **后向引用**:在环视断言中使用 `\g{N}` 实现后向引用,匹配与之前第N个捕获组相同的内容。 DEELX V1.2 版本可能包含...

Global site tag (gtag.js) - Google Analytics