`
caii
  • 浏览: 6343 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

正向预查

阅读更多

 

正向预查

 

正向预查( (?=pattern) ),在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如, 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows" 。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

 

以上为正向预查的概念,在任何匹配 pattern 的字符串开始处。

这里指定了一个位置!。

比如 /\d(?=[a-f])/

对于字符串 ”56dg” 匹配 6d 之后,接着从 d 开始查找(而不是从包含预查的字符之后开始 )。

 

r=/(\w)(?=(\w{3})+$)/

对于以上表达式,先看(? = )里面的为 (\w{3})+$ ,意思是 3 个单词字符 [A-Za-z0-9_] 。重复 1 此或则多次。最后是单词的结尾。这个正则的前面部分是 \w ,意思是一个单词字符。 整体意思是匹配一个单词字符,但是后面的单词(一直到结尾部分)必须有( 7 的倍数)比如 3 个, 6 个, 9 …… 的单词字符。

如果是 s=”amcd125e” match 以上正则,会是 a 吗?

不是, a 后面有 7 个(并非 3 的倍数)字符串,所以只会是 m, 所以第一次匹配到了 m

接着从 m 开始开始往下查 . ,不是 c ,而是 1

r2=/\B(?=(\w{3})+$)/

这里 \B 匹配非单词边界,这里已是是匹配一个位置。这个位置后面是 3 个单词字符 [A-Za-z0-9_] 。重复 1 此或则多次。最后是单词的结尾。

 

r3=/(?=(\w{3})+$)3/g

匹配一个位置,位置后面还必须是 3 ,两则都符合才算匹配。

 

实际引用例子:

var t="ic345678795351fttyud3489058gg2678" ;
var r = /(\w)(?=(\w{7})+$)/g;
var r2= /(?=(\w{3})+$)/g
alert( t.replace( r,"$1,"))

 

分享到:
评论

相关推荐

    PHP正则之正向预查与反向预查讲解与实例

    了解正向预查&反向预查前,我们先要知道正则的2个函数:preg_match_all 、 preg_replace 正向预查&反向预查 正向或反向预查都是非获取匹配,不进行存储供以后使用。 1、正向预查 (?:pattern) 匹配结果 (?=pattern...

    正则表达式中的正向预查和负向预查

    在正则表达式中,预查(Lookahead)是一种零宽断言(Zero-Width Assertion),它用来声明某个位置后面(正向预查)或前面(负向预查)必须满足或不满足某个特定的模式,但它不会消耗任何字符,即匹配过程中不会移动...

    正则表达式中的正向预查和负向预查实例分析

    正则表达式的核心是各种特殊字符和构造,它们定义了匹配规则和方式,其中正向预查(lookahead)和负向预查(lookbehind)是正则表达式中两种非常有用的模式。 正向预查和负向预查都属于零宽断言(zero-width ...

    DEELX_预搜索(零宽度断言).rar

    预搜索,也称为正向预查,在正则表达式中,它允许我们在匹配字符串之前检查某个模式是否存在,但不包括这个模式在匹配结果中。在易语言中,我们可以通过特定的语法实现类似的功能,比如在处理字符串时,先检查某个...

    java 正则替换 保留原值并增加' ',

    然而,如果我们想要在替换过程中保留原值的一部分,就需要利用正向预查(Positive Lookahead)或正向后顾(Positive Lookbehind)等高级正则特性。 以题目中的"保留原值并增加' '"为例,假设我们有一个字符串`...

    C#正则表达式

    总的来说,正则表达式是C#中非常强大且灵活的工具,而反向预查和正向预查则是其高级特性,能够帮助我们编写出更加精确和复杂的匹配规则。熟练掌握这些技巧,能极大地提高处理文本数据的效率。在实际项目中,结合`...

    正则表达式

    预查和获取匹配允许在不消耗字符的情况下进行匹配,分为正向预查和反向预查。正向预查是查看后面的内容是否符合某个模式,而反向预查则是查看前面的内容。这些预查可以单独使用,也可以组合使用,进一步增强了匹配的...

    易语言正则表达式应用一例

    =)`表示正向预查,匹配其后跟的表达式的位置,但不包含预查的匹配。 6. **反向预查**:使用`(?!)`表示反向预查,匹配不跟其后的表达式的位置。 7. **易语言中的正则函数**:在易语言中,可以使用`正则表达式匹配`...

    正则表达式语法(常用的正则表达式)

    =pattern):正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。 * (?!pattern):负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。 * x|y:匹配 x 或 y。 * [xyz]:字符集合,匹配所包含的...

    正则表达式语法参考.rar

    - 在正向预查和负向预查中,可以使用\数字的形式引用前面的捕获组,如"(ab)(?=\2)",匹配"aa"但不匹配"bb"。 通过熟练掌握这些基本元素和组合技巧,你可以编写出复杂的正则表达式来处理各种文本数据。在编程语言中...

    JavaScript正则表达式详解及使用方法

    主要内容包括创建正则表达式的方法、常用的元字符、量词、边界符、字符集合、反向引用、正向预查等。同时,文章还通过具体示例展示了如何在JavaScript中使用正则表达式的exec、test、match、replace、search和split...

    精通正则表达式(中文版) 第1 3 4 5章

    第三章深入讨论了正向预查和反向预查,这是正则表达式中的高级特性。正向预查((?=...))允许我们匹配那些后面紧跟某种模式的字符串,而反向预查((?!...))则匹配不紧接着某种模式的字符串。这些技术可以极大地增强...

    学习正则不再难 看完你就是正则行家

    正向预查确保匹配之前文本中包含某个模式,但不包括该模式。 **示例:** - **正则表达式:** `a(?=b)` ##### 3. 反向预查 反向预查确保匹配之后文本中包含某个模式,但不包括该模式。 **示例:** - **正则表达式:...

    RegexBuddy 正则编写工具

    支持高级正则特性,如正向预查(前瞻断言)和正向后查(后顾断言),这对于处理特定条件的匹配问题非常有用。 7. **替换功能** 不仅能检测匹配,RegexBuddy还能进行替换操作,支持使用正则表达式进行复杂的文本...

    浅析正则表达式中的lastIndex以及预查

    预查分为正向预查(lookahead)和负向预查(lookbehind),预查是零宽断言的一种形式。 正向预查:它用于断言某个字符或表达式后面紧跟的字符。它不会消耗字符,也不会将匹配结果返回。它用于指定一个位置,该位置...

    Linux_Shell正则表达式语法doc

    =pattern)`:正向预查,匹配任何后面跟着pattern的字符串,但不包含pattern本身。 - `(?!pattern)`:负向预查,匹配任何后面不跟着pattern的字符串。 5. **分组与捕获**: - `(pattern)`:创建一个捕获组,匹配...

    深入浅出之正则表达式

    =pattern)`正向预查,只匹配后面跟着`pattern`的字符串;`(?!pattern)`反向预查,只匹配后面不跟着`pattern`的字符串。 正则表达式的应用非常广泛,例如在编程语言中,它们被用于字符串处理函数,如JavaScript的`...

Global site tag (gtag.js) - Google Analytics