zoukankan      html  css  js  c++  java
  • C#正则表达式匹配替换字符串

    事例一:\w+=>[A-Za-z1-9_],\s+=>任何空白字符,()=>捕获       

    string text = @"public string testMatchObj string s string  match ";

    string pat = @"(\w+)\s+(string)";
    // Compile the regular expression.
    Regex r = new Regex(pat, RegexOptions.IgnoreCase);
    // Match the regular expression pattern against a text string.
    Match m = r.Match(text);
    int matchCount = 0;
    while (m.Success) 
    {
     Response.Write("Match"+ (++matchCount) + "<br>");
     for (int i = 1; i <= 2; i++) 
     {
      Group g = m.Groups[i];
      Response.Write("Group"+i+"='" + g + "'"  + "<br>");
      CaptureCollection cc = g.Captures;
      for (int j = 0; j < cc.Count; j++) 
      {
       Capture c = cc[j];
       Response.Write("Capture"+j+"='" + c + "', Position="+c.Index + "<br>");
      }
     }
     m = m.NextMatch();
    }

    该事例运行结果是:
    Match1
    Group1='public'
    Capture0='public', Position=0
    Group2='string'
    Capture0='string', Position=7
    Match2
    Group1='testMatchObj'
    Capture0='testMatchObj', Position=14
    Group2='string'
    Capture0='string', Position=27
    Match3
    Group1='s'
    Capture0='s', Position=34
    Group2='string'
    Capture0='string', Position=36

    事例二:

                string x = this.txt.Text;
                RegexOptions ops = RegexOptions.Multiline;
                Regex r = new Regex(@"\[(.+?)\]", ops); //\[(.+?)\/\]   @"\[(.+)\](.*?)\[\/\1\]"
                //Response.Write(r.IsMatch(x).ToString()+DateTime.Now.ToString());
                if (r.IsMatch(x))
                {
                    x = r.Replace(x, "<$1>");
                    Response.Write(x.ToString() + DateTime.Now.ToString());
                    //Console.WriteLine("var x:" + x);//输出:Live for nothing
                }
                else
                {
                    Response.Write("false" + DateTime.Now.ToString());
                }

    这个是为了替换"[]"对,把它们换成"<>"

    C#中的正则表达式包含在.NET基础雷库的一个名称空间下,这个名称空间就是System.Text.RegularExpressions。该名称空间包括8个类,1个枚举,1个委托。他们分别是
                         Capture: 包含一次匹配的结果; 
                         CaptureCollection: Capture的序列; 
                         Group: 一次组记录的结果,由Capture继承而来; 
                         GroupCollection:表示捕获组的集合
                         Match: 一次表达式的匹配结果,由Group继承而来; 
                         MatchCollection: Match的一个序列; 
                         MatchEvaluator: 执行替换操作时使用的委托; 
                         Regex:编译后的表达式的实例。 
                         RegexCompilationInfo:提供编译器用于将正则表达式编译为独立程序集的信息
                         RegexOptions 提供用于设置正则表达式的枚举值
    Regex类中还包含一些静态的方法: 
                        Escape: 对字符串中的regex中的转义符进行转义; 
                        IsMatch: 如果表达式在字符串中匹配,该方法返回一个布尔值; 
                        Match: 返回Match的实例; 
                        Matches: 返回一系列的Match的方法; 
                        Replace: 用替换字符串替换匹配的表达式; 
                        Split: 返回一系列由表达式决定的字符串; 
                        Unescape:不对字符串中的转义字符转义。

  • 相关阅读:
    洛谷P1422 小玉家的电费
    洛谷P1425 小鱼的游泳时间
    洛谷P1421 小玉买文具
    洛谷P1001 A+B Problem
    洛谷P1000 超级玛丽游戏
    Android Hook框架adbi的分析(2)--- inline Hook的实现
    Android Apk加固的初步实现思路(dex整体加固)
    Android Hook框架adbi的分析(1)---注入工具hijack
    从苏宁电器到卡巴斯基(后传)第05篇:聊聊我对WannaCry产生的感慨
    Android APK程序的smali动态调试
  • 原文地址:https://www.cnblogs.com/Denny_Yang/p/2021955.html
Copyright © 2011-2022 走看看