zoukankan      html  css  js  c++  java
  • 正则表达式匹配指定字符区间的内容,且不包含指定字符

    举例:(?<=%%!).*(?=%%~)

    (?<=%%!)       匹配一个位置,而不是字符.这个位置在 %%! 后面

    (?=%%~)        匹配一个位置,而不是字符.这个位置在 %%~ 前面

    .*                     这两个位置之间的所有字符.贪婪匹配模式

    .*?                   这两个位置之间的所有字符.懒惰匹配模式,也叫非贪婪模式

    贪婪匹配:匹配到结束

    非贪婪匹配:有多个的会匹配多个

    案例:

    $abc>=10&&$ABC<20

    希望匹配$abc$ABC,也就是>= <这些符号前的内容。

    使用正则:

    /.*?(?=>|<)/

    1、为什么不使用  .*  呢?
       答:如果使用.*,会只匹配到一次,也就是$abc>=10&&$ABC<20。

    2、?= 是什么?

          非捕获元(有3个):?:    ?=   ?!

          选择:圆括号将所有选择项括起来,相邻的选择项之间用 | 分隔。但用圆括号会有一个副作用,使相关的匹配会被缓存,此时可用 ?: 放在第一个选项前来消除这种副作用。

           ?= 正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串

           ?!  负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。

  • 相关阅读:
    P3180 [HAOI2016]地图
    P2787 语文1(chin1)- 理理思维
    P2221 [HAOI2012]高速公路
    P4137 Rmq Problem / mex
    P3746 [六省联考2017]组合数问题
    P2461 [SDOI2008]递归数列
    P3715 [BJOI2017]魔法咒语
    P3195 [HNOI2008]玩具装箱TOY
    Linux下的strerror是否线程安全?
    bash/shell的字符串trim实现
  • 原文地址:https://www.cnblogs.com/zuojiayi/p/10935683.html
Copyright © 2011-2022 走看看