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

          经常用到正则表达式,以前很懒总是让同事帮我写,最近有时间稍微复习了下正则表达式的基本语法,发现网络上的这类知识是琳琅满目,通过去糟粕取精华后总结了这篇文章。

    为了便于学习,自己写了一个测试正则的小工具

    关键代码:

      /// <summary>
            /// 验证
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnVerify_Click(object sender, EventArgs e)
            {
                string getRegex = this.txtRegex.Text.Trim();
                string getStr = this.txtString.Text.Trim();
                //开始匹配
                bool result = System.Text.RegularExpressions.Regex.IsMatch(getStr, getRegex);
                   if(result)
                   {
                       this.lblMessage.Text="恭喜您,匹配成功!";
                   }
                   else
                   {
                         this.lblMessage.Text="对不起,匹配失败!";
                   }
            }
    View Code

    命名空间:  System.Text.RegularExpressions下的Regex类 该类不是静态类却有自己的静态方法和非静态方法虽然方法名字都是IsMatch,但不是同一个方法,好了言归正传。

    元字符

    []           表示字符组,仅仅匹配字符组中的一个字符(只是单个)

            例如a[123]b 匹配 a1b、a2b、a3b 不匹配a12b

    [0-9]      表示0到9之间任意一个数字

    [a-z]      表示a到z之间任意一个字符

    .            表示除了 外的一切字符

    [a-zA-Z] 表示a到z 或者 A到Z之间的任意一个字符

    [a-]      表示只能匹配 单字符a 和 单字符-   -前面加一个是转义的意思 -是连字符需要转义

     [a.]       表示匹配a和单字符.  .原来表示除了 外的一切单字符  这里如何需要这样表示则需要 [a.] 

    ()          类似数学的作用改变逻辑顺序

    |            表示或的意思

    限定符

    {n}        表示{}前面的单字符必须出现n次才匹配成功,如果遇到()则()里面的必须出现n次

    {n,}       表示{}前面的单字符必须至少出现n次,如果遇到()则()里面的必须至少出现n次

    {n,m}    表示{}前面的单字符出现的次数必须在n到m之间

          例如 abcd{2,4}可以匹配 abcdd abcdd 

              (ab){2,4}可以匹配 abab abababab

    *            表示表达式出现0次或n次 和{0,}相同

    +            表示表达式至少出现一次和{1,}相同

    ?             表示表达式出现0次或者1次和{0,1}相同

    注意:     * + ? 都是针对表达式的 例如 abc+  匹配abc 不匹配bc

    ^和$

    ^             表示字符串的开始

    ^abc    表示需要匹配的正则表达式字符串必须以abc开始

    [^0-9]    这里的^代表非的意思,匹配0到9意外的任意单个字符

    $              表示字符串的结束(要匹配的正则表达式的结束)

    abc$         表示字符串必须以abc结尾

    简写

    d             相当于[0-9]   例如:adb 相当于a[0-9]b  (特别注意一点d 除了可以匹配[0-9]这些正常的数字以外,它还可以匹配0123456789这些全角的数组。所以我们如果仅仅需要半角的数字只能使用[0-9]这样的书写方法) 

    D            表示[^0-9]

    s             表示所有空白符

    S             是s的反面,意思是所有s不能匹配的S都可以匹配

    w             表示的[a-zA-Z0-9_]   就是所有大小写字母+数字+下划线 的单个字符

    W            表示w的反面       由于.net默认采用unicode方式来匹配,所以w也可以匹配汉字

    正则表达式的转义符

     例如d表示[0-9] 那么如何匹配d本身呢 可以这样写:\d 类似的还有*   +   .  -   {2,3}  

    简便的写法类似于c#中的语法@符号 ,例如:string s=Regex.Escape(@"d{1,3}");

    一个正则表达式当出现双引号的时候我们怎么做书写

     

     正则测试小工具源代码下载

  • 相关阅读:
    Tongue Twister之scream
    把5页的内容变成2页
    Python3 字符串中的变量替换
    notepad++同时编辑多行
    获取元素属性值
    selenium定位H5表单验证的提示语
    POJ 3009 Curling 2.0(dfs)
    CCF 2016122 工资计算
    POJ 2976 Dropping tests(01分数规划二分(最大化平均值))
    POJ 2155 Matrix(二维树状数组)
  • 原文地址:https://www.cnblogs.com/CallmeYhz/p/4897982.html
Copyright © 2011-2022 走看看