zoukankan      html  css  js  c++  java
  • Regex: positive lookahead 先行断言____ 后行断言(lookbehind)

    先行断言:

    /a(?=b)/  ,positive lookahead,a的后方必须是b才行

    /a(?!b)/   ,negative lookahead,a的后方必须不是b才能匹配

     如下图示:  来自:https://regexper.com/#%2F%5Cd%28%3F%3D%5BAB%5D%29%2F

    一个例子(转自:http://darkk6.blogspot.com/2017/03/regexp-lookahead-lookbehind.html

    (?<!d)d{6,8}(?!d),來解釋看看這一段到底在找什麼東西。

    先將其拆為:(?<!d) d{6,8} (?!d) 三段,很快就可以看出,要找的東西是「6~8 個連續數字」,但是「前面不能有數字(Negative lookbehind)」以及「後面不能跟著數字(Negative lookahead)」。

    由於 {6,8} 是贪心的 Greedy ,會盡量多取,因此就可以限制找到的數字數量是在 6~8 ,並且排除連續 9 個(以上)數字的部分了。

  • 相关阅读:
    工厂方法模式
    代理模式
    观察者模式
    策略模式
    单例模式
    简单工厂模式
    lintcode:等价二叉树
    lintcode:被围绕的区域
    lintcode:二叉树的所有路径
    lintcode:快乐数
  • 原文地址:https://www.cnblogs.com/books2read/p/11130870.html
Copyright © 2011-2022 走看看