• 正则表达式摘录


    常用元字符 

      . 匹配除换行符以外的任意字符      *  重复零次或更多次      W 匹配任意不是字母,下划线,数字,汉字的字符

      w 匹配字母或数字或下划线        +  重复一次或更多次      S 匹配任意不是空白符的字符

      s 匹配任意的空白字符          ?  重复零次或一次       D 匹配任意非数字的字符

      d 匹配数字               {n} 重复n次            B 匹配不是单词开头或结束的位置

       匹配单词的开始或结束         {n,}  重复n次或更多次        [^x] 匹配除了x以外的任意字符

      ^ 匹配字符串的开始           {n,m} 重复n到m次        [^aeiou] 匹配除了aeiou这几个字母以外的任意字符

      $ 匹配字符串的结束

     常规使用

       "*"(贪婪)   重复零次或更多

         例如"aaaaaaaa" 匹配字符串中所有的a  正则: "a*"   会出到所有的字符"a"

         "+"(懒惰)   重复一次或更多次

           例如"aaaaaaaa" 匹配字符串中所有的a  正则: "a+"  会取到字符中所有的a字符,  "a+"与"a*"不同在于"+"至少是一次而"*" 可以是0次,

           稍后会与"?"字符结合来体现这种区别

         "?"(占有)   重复零次或一次

           例如"aaaaaaaa" 匹配字符串中的a 正则 : "a?" 只会匹配一次,也就是结果只是单个字符a

       "{n}"  重复n次

           例如从"aaaaaaaa" 匹配字符串的a 并重复3次 正则:  "a{3}"  结果就是取到3个a字符  "aaa";

       "{n,m}"  重复n到m次

           例如正则 "a{3,4}" 将a重复匹配3次或者4次 所以供匹配的字符可以是三个"aaa"也可以是四个"aaaa" 正则都可以匹配到

         "{n,}"  重复n次或更多次

           与{n,m}不同之处就在于匹配的次数将没有上限,但至少要重复n次 如 正则"a{3,}" a至少要重复3次

     懒惰限定符

      "*?"   重复任意次,但尽可能少重复 

          如 "acbacb"  正则  "a.*?b" 只会取到第一个"acb" 原本可以全部取到但加了限定符后,只会匹配尽可能少的字符 ,而"acbacb"最少字符的结果就是"acb" 

      "+?"  重复1次或更多次,但尽可能少重复

         与上面一样,只是至少要重复1次

      "??"  重复0次或1次,但尽可能少重复

          如 "aaacb" 正则 "a.??b" 只会取到最后的三个字符"acb"

      "{n,m}?"  重复n到m次,但尽可能少重复

              如 "aaaaaaaa"  正则 "a{0,m}" 因为最少是0次所以取到结果为空

      "{n,}?"    重复n次以上,但尽可能少重复

              如 "aaaaaaa"  正则 "a{1,}" 最少是1次所以取到结果为 "a"

     

    捕获分组

        

    "(exp)"    匹配exp,并捕获文本到自动命名的组里

    "(?<name>exp)"   匹配exp,并捕获文本到名称为name的组里

    "(?:exp)"  匹配exp,不捕获匹配的文本,也不给此分组分配组号

    以下为零宽断言

    "(?=exp)"  匹配exp前面的位置

      如 "How are you doing" 正则"(?<txt>.+(?=ing))" 这里取ing前所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为"How are you do";

    "(?<=exp)"  匹配exp后面的位置

      如 "How are you doing" 正则"(?<txt>(?<=How).+)" 这里取"How"之后所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为" are you doing";

    "(?!exp)"  匹配后面跟的不是exp的位置

      如 "123abc" 正则 "d{3}(?!d)"匹配3位数字后非数字的结果

    "(?<!exp)"  匹配前面不是exp的位置

      如 "abc123 " 正则 "(?<![0-9])123" 匹配"123"前面是非数字的结果也可写成"(?!<d)123"

      

     

  • 相关阅读:
    当前日志损坏解决一例
    Oracle 1204 RAC failover 测试 (一)
    Logical standby跳过个别SQL不Apply的测试
    Data guard 又出问题了
    CPIO无反应
    回答棉花糖先生关于我说的DB自动增加Index的问题
    SSD硬盘,先不要用在Server上
    ORA00304: requested INSTANCE_NUMBER is busy,终于解决
    .Net运行时的相互关系
    CSS布局探密04
  • 原文地址:https://www.cnblogs.com/arthas-zht/p/6439254.html
Copyright © 2020-2023  润新知