zoukankan      html  css  js  c++  java
  • ruby 正则预查模式

    零宽正回顾后发断言  零宽正预测先行断言
        /(?<=behind)     (?=ahead)/
    /(?<!not-behind)    (?!not-ahead)/
    负向零宽后发断言   负向零宽先行断言

    str = "str 
    wait"
    str1 = "str 
    wert"

    puts str1 =~ /str\s*\n\s*(?!wait)/

    正向预查
    比如:
    有一个字符串:
    abcdefghi
    /ab(c)/ 将匹配出来abc 并将c储存到$1
    /ab(?:c)/ 将匹配出来abc 并不会将c储存到$1
    /ab(?=c)/ 将匹配出来ab,没有匹配出abc,那么c起什么作用呢,限定作用,解释器找到ab后没有马上返回,而是再查查ab后面的是c吗? 如果是c则才返回ab,否则返回匹配失败。看来它预查了c,难怪命名为正向预查。

    我个人觉得这个匹配有个替代方法,可以去匹配/(ab)c/,然后通过$1取出ab,我觉得牛的是下面的这个符号!
    =====
    ?!
    =====
    反(逆)向预查
    =号变为了!号,!表示非,可见这是一个非操作,这个是否可以解决开始的问题呢?
    比如:
    有一个字符串:
    abcdefghi
    /ab(?=c)/ 将匹配出来后面紧跟着c的ab
    推理:
    /ab(?!c)/ 将匹配出来后面紧跟着不是c的ab,在这个字符串里,将匹配不出结果。

  • 相关阅读:
    支付宝小程序InputItem清除icon不显示
    win11 激活 wi7 win11 魔兽争霸切换 后无法 回到游戏界面 处理办法
    HJ10 字符个数统计
    iOS 15系统导航栏适配
    HJ4 字符串分隔
    HJ7 取近似值
    [iOS]隐藏导航栏3种方式
    HJ3 明明的随机数
    HJ8 合并表记录
    HJ5 进制转换
  • 原文地址:https://www.cnblogs.com/zhangfei/p/2008137.html
Copyright © 2011-2022 走看看