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

    先看一段例子:

    str2 = "abcdefghi"
    puts str2.scan(/ab(c)/)  输出c,/ab(c)/的意思是指匹配abc,但只取出()里面的字符串
    puts str2.scan(/ab(?:c)/) 输出abc,/ab(?:c)/的意思是指匹配ab后,判断ab后面是否跟着c,如果是则取出abc,不是则为nil
    puts str2.scan(/ab(?=c)/) 输出ab,/ab(?=c)/的意思是指匹配ab后,判断ab后面是否跟着c,如果是则取出ab,不是则为nil
    puts str2.scan(/ab(?!d)/) 输出ab,/ab(?!d)/的意思是指匹配ab后,判断ab后面是否跟着d,如果是则为nil,如果不是,则输出ab

    正向或反向预查都是非获取匹配,不进行存储供以后使用。javascript不支持反向预查

    测试的文本:

    Java6 Java7

    1、正向预查

    (?:pattern) 匹配结果。Java(?:6|7)等效于Java6|Java7,结果Java6 Java7

    (?=pattern) 正向匹配。Java(?=6),匹配后面跟着6的Java,即第一个Java,结果Java6 Java7

    (?!pattern) 正向不匹配。Java(?!6),匹配后面不跟着6的Java,即第二个Java,结果Java6 Java7

    2、反向预查

    (?<=pattern) 反向匹配。(?<=J)a,匹配紧跟字母J后面的a,结果Java6 Java7

    (?<!pattern) 反向不匹配。(?<!J)a,不匹配紧跟字母J后面的a,结果Java6 Java7

  • 相关阅读:
    基于Yarp的http内网穿透库HttpMouse
    Redis+Lua解决高并发场景抢购秒杀问题
    SQL慢查询排查思路
    webrtc之TURE、STUN、摄像头打开实战
    WebService就该这么学
    超详细 Java 15 新功能介绍
    Java 14 新功能介绍
    Java 17 将要发布,补一下 Java 13 中的新功能
    Java 8 Function 函数接口
    PO/DO/VO/DTO/BO/POJO概念与区别
  • 原文地址:https://www.cnblogs.com/zhangfei/p/2068451.html
Copyright © 2011-2022 走看看