zoukankan      html  css  js  c++  java
  • 正则表达式(含递归用法)

    (原创)

    正则表达式,日常用于匹配。
    简单小记一下:

    一、基本

       表示转义
    xA9    x 16进制
    .     任意字符

    a|b   a或b,注意,如果是 a|ab,去匹配 ab ,那么大多数引擎是匹配到 a,只有少数是匹配到ab     
    [abc]    set内的或
    [a-zA-Z0-9]   范围的一种写法
    [^abc]    非set 
    ^   起始(匹配位置,而不是字符)
    $   结束(匹配位置,而不是字符)

       word boundary 单词位置, 这种位置左右边有且仅有一边是字符。

    例如: . 匹配 abc def ghi 三个单词中间的两个空格

    二、数量,懒惰,独占

    ?     0-1 
    ??    lazy
    ?+    Possessive ,不回溯
            例如,abc?+c ,abcc 能行,abc 不行
    *     0-无穷
    *?  lazy 
    *+    Possessive ,不回溯
    +     1-无穷 
    +?   lazy 
    ++   Possessive ,不回溯
           例如: abc++c  是不能匹配任何字符串的~
    a{n}    n个a 
    a{n,m}    范围 n到m个

    三、捕获组 
    (groupa)     括号括起来
    捕获组可以具有索引值,英文是 backreference,如
    (abc|def)=1 匹配 abc=abc 
    原子组,不回溯:
    a(?>bc|b)c 匹配abcc,但abc不行 


    向前(右)向后(左):
    a(?=b)   向前为
    a(?!b)    向前非
    (?<=a)b   向后为
    (?<!a)b    向后非

    索引(backreference)数字序列:从左到右,从外到内递归递增,例如:
    (str1)(str2(str3))(str4)
    str1 索引1,str2(str3) 整体索引2 ,str3 索引3 ,str4 索引4

    四、递归用法:

    注意,不是所有语言都支持

    例如: ag<0>?b       g<0> 代表递归匹配整个表达式,?还是代表0次或1次 
    整个表达式可以匹配 ab ,aabb,aaabbb ......(k个a,k个b)  

  • 相关阅读:
    Selenium-Xpath使用方法
    HTML基础之js
    HTML基础—DOM操作
    CSS基础知识总结二
    CSS基础知识总结之css样式引用的三种方式
    BZOJ 2329/2209 [HNOI2011]括号修复 (splay)
    BZOJ 1576 [USACO]安全路经Travel (树剖+线段树)
    BZOJ 2402 陶陶的难题II (01分数规划+树剖+线段树+凸包+二分)
    BZOJ 4044 Virus synthesis (回文自动机+dp)
    BZOJ 2342 [SHOI2011]双倍回文 (回文自动机)
  • 原文地址:https://www.cnblogs.com/randomstring/p/10426447.html
Copyright © 2011-2022 走看看