zoukankan      html  css  js  c++  java
  • 正则表达式

     //-----匹配单字符形式------------

                //"."匹配任意单个字符,包括其本身,可以连续使用

                //[dt]中括号为特殊标记,匹配中括号内的任意一个。可以区间方式填写[0-9][0-9a-z].

                //[^abc]反义字符组,匹配中括号外的任意一个字符![^A-Z]

                //当匹配元字符(如:.[])等,需要转义

                //匹配数字类型d,所有单个数字,与[0-9]相同

                //所有非数字,D,与[^0-9]相同

                //w,所有单个大小写字母、数字、下划线,与 [a-zA-Z0-9_]相同

                //W,所有单个非大小写字母、非数字、非下划线,与 [^a-zA-Z0-9_]相同

                //"s,所有单个空字符,与 [f v]相同"

                //"S,所有单个非空字符,与 [^f v]相同"

     

                //------匹配多个字符------------

                //匹配一个或多个用+,w+[as]+

                //匹配0个或多个用*,d*[a-z]*

                //匹配0个或1个用, aa

                //匹配指定书目用{数字},audiA{8}

                //匹配区间以内数目的字符{最小个数,最大个数},{0,1}相当于"?"

     

                //--------贪婪匹配与惰性匹配(后面加?)------------

                //"<a>ru</a>rueoig124t<a>324tgrfh</a>" (regex:<a>.*</a>  <a>.*?</a>)

                //贪婪匹配:<a>ru</a>rueoig124t<a>324tgrfh</a>

                //惰性匹配:<a>ru</a>和<a>324tgrfh</a>

    贪婪匹配

    惰性匹配

    匹配描述

    ?

    ??

    匹配0个或1个

    +

    +?

    匹配1个或多个

    *

    *?

    匹配0个或多个

    {n}

    {n}?

    匹配n个

    {n,m}

    {n,m}?

    匹配n个或m个内

    {n,}

    {n,}?

    匹配n个或多个

     

    //--------匹配边界-------------------

                //""放在匹配模式的字符前面,用于表示""后面的字符必须位于首位。

                //""放在匹配模式的字符后面,用于表示""前面的字符必须位于末位。

                //"B"用于匹配非边界的情况,用法与""相同。

                //通常情况下,以 空格、段落首行、段落末尾、逗号、句号 等符号作为边界,值得注意的是,分隔符-也可以作为边界。

                //匹配文本的边界:在匹配模式前面加^,以匹配其位于整个文档的开头;在匹配模式的最后一个字符后加$,说明是文档的结尾。

     

     //--------匹配子模式----------------
                //在正则表达式中,可以使用“(”和“)”将模式中的子字符串括起来,以形成一个子模式。将子模式视为一个整体时,那么它就相当于单个字符
                //可以使用“|”将一个表达式拆分成两部分“reg1|reg2”,它的意思是:匹配所有符合表达式reg1的文本 或者 符合表达式reg2的文本

                //-----------后向引用-------------------
                //正则表达式中,使用“数字”来进行后向引用,数字表示这里引用的是前面的第几个子模式,即第几个"()"
                //例如<h([1-6])>.*?</h1> ,此处的1用于匹配([1-6]), flag 1:
                //<h([1-6])>.*(.?)<(/h)3>,此处的3用于匹配(/h).
                //在.net中的后项引用实现,如下:
                //在 .Net 中使用正则表达式进行查找时,给子模式命名的语法是:?<name>,后向引用的语法是:k<name>。
                //例如<h(?<num>[1-6])>.*(.?)</hk<num>> 与flag 1处的正则结果相同。

                //---------文本替换----------------
                //在查找中,使用后向引用来代表一个子模式,其语法是“数字”;而在替换中,其语法是“$数字”
                //"$数字",即替换第几个“()”中的文本。
                //例如:Regex:((d{4}))    Replace:$1-    Text: (0398)5894986   和(0371)2563484
                //结果: 0398-5894986 和0371-2563484
                //在 .Net 中使用正则表达式进行替换时,给子模式命名的语法是:?<name>,后向引用替换的语法是:${name}。

                //-----------预查和非获取匹配----------
                //为了使用后向引用,我们需要“()”将字符括起来形成一个子模式。系统在幕后会将所有的子模式保存起来。
                //正则表达式中,可以在子模式内部前面加“?:”来表示这个子模式是一个 非获取匹配,非获取匹配不会被保存,不能在后向引用中获取
                //例如:Regex:windows ([w.]+)   Replace:win$1       Text:windows 2003    结果:win2003     //后向引用
                //  Regex:windows (?:[w.]+)     Replace:win$1       Text:windows 2003    结果:win$1       //非获取匹配
                //正向预查。//
                //在子模式内部前面加“?=”,表示要匹配的文本必须满足子模式前面的文本,不包含子模式。
                //例如:Regex:windows (?=[w.]+)       Text:windows 2003          结果:windows
                //反向预查。//
                //反向预查在子模式内部前面加“?<=”,要匹配的文本必须满足此子模式 后面 的表达式;子模式不参与匹配。
                //例如:Regex:(?<=CNY:)d+.?d+      TEXT:CNY:102.36 和CNY:4566   结果:102.36 和4566
                //正向、反向预查组合。//
                //Regex:(?<=(<h(?<num>[1-6])>)).*?(?=(</h(k<num>)>))  可以获得<html> 中间的内容!
                //负正向预查,负反向预查。
                //在正则表达式中,可以在子模式内部前面加 “?!” 来形成一个 负正向预查,它的效果与 “?=” 相反
                //Regex:windows (?![d.]+)  可以得到windows xp中的“windows” ,windows 2003 则什么也匹配不出来
                //在正则表达式中,可以在子模式内部前面加 “?<!” 来形成一个 负反向预查,它的效果与“?<=” 相反
                //Regex:(?<!CNY:)d+.?d+   Text:CNY:789.9 US:789.90   结果:789.90

     

  • 相关阅读:
    关于oracle小数和整数混合排序错误问题
    oracle 格式转换 <行转列列转行>
    Postgresql 配置文件详解
    Postgresql 同步流复制
    Postgresql 安装
    mongodb 复制集 维护小结
    mongodb 角色总结
    mongodb 安全认证
    SqlServer实时数据同步到mysql
    批量修改在索引中增加字段
  • 原文地址:https://www.cnblogs.com/hometown/p/3204231.html
Copyright © 2011-2022 走看看