• C#中的正则表达式:返回结果的集合

  • 本文关于 c#,正则表达式regex
  • CodeGo.net > C#中的正则表达式:返回结果的集合
  •  

    C#中的正则表达式:返回结果的集合



    c# 正则表达式regex
    string: "<something><or><other>"
    regex pattern: "<(\w+)><(\w+)><(\w+)>"
    
    我怎么做一个正则表达式调用返回的结果包含括号之间的所有的集合?例如,我会希望有一个结果集的{“,”或“,”其他“}。 对于点,这是什么所谓?捕获?捕获组?样的模板吗?我觉得,如果我知道正确的术语,我可以搜索它。 谢谢。
    本文地址 :CodeGo.net/1482717/
    -------------------------------------------------------------------------------------------------------------------------
    1.他们通常被称为捕获组,并且你可以得到捕获,如下所示:
    Regex regex = new Regex(@"some (pattern)");
    Match m = regex.Match("some pattern");
    foreach (Capture c in m.Groups) {
     Console.WriteLine(c.Value); // write the value to the console "pattern"
    }
    
    m.Groups.Count让你知道有多少组匹配,m.Groups[0]永远是全场的文字。
    2. 使用的MatchCollection。 编辑:忘了正则表达式改变什么你要求。下面的代码会生成以下输出: 或 其他 难道这就是你想要的?
     static void Main(string[] args)
     {
      var str = "<something><or><other>";
      var re = new Regex(@"(\w+)");
      MatchCollection mc = re.Matches(str);
      foreach (Match m in mc)
      {
       Console.WriteLine(m.Value);
      }
     }
    
    我认为你正在寻找MatchCollection:
     
     代表组
     通过反复运用找到的匹配
     正则表达式模式的
     输入字符串。
     
     例如:
    
    string input = "<something><or><other>";
    string pattern = "(?<=<)[^>]*(?=>)";
    MatchCollection matches = Regex.Matches(input, pattern);
    foreach (Match match in matches)
    {
     Console.WriteLine(match.ToString()); // do something with match here
    }
    
    编辑:从这个改变正则表达式:<(\w+)><(\w+)><(\w+)>到这一点:(?<=<)[^>]*(?=>)
    3. 有许多方法可走:
    using System;
    using System.Text.RegularExpressions;
    namespace Test
    {
     class Test
     {
     static void Main(string[] args)
     {
      string target = @"<something><or><other>";
      // One group, many matches
      Regex r1 = new Regex(@"<(\w+)>");
      MatchCollection mc = r1.Matches(target);
      foreach (Match m in mc)
      {
      Console.WriteLine(m.Groups[1].Value);
      }
      Console.WriteLine();
      // One match, many groups
      Regex r2 = new Regex(@"<(\w+)><(\w+)><(\w+)>");
      Match m2 = r2.Match(target);
      if (m2.Success)
      {
      foreach (Group g in m2.Groups)
      {
       Console.WriteLine(g.Value);
      }
      }
      Console.WriteLine();
      // One group, one match, many captures
      Regex r3 = new Regex(@"(?:<(\w+)>)+");
      Match m3 = r3.Match(target);
      if (m3.Success)
      {
      foreach (Capture c in m3.Groups[1].Captures)
      {
       Console.WriteLine(c.Value);
      }
      }
      Console.WriteLine();
      // Many matches, no groups, no captures
      Regex r4 = new Regex(@"(?<=<)\w+(?=>)");
      foreach (Match m in r4.Matches(target))
      {
      Console.WriteLine(m.Value);
      }
      Console.ReadLine();
     }
     }
    }
    

    本文标题 :C#中的正则表达式:返回结果的集合
    本文地址 :CodeGo.net/1482717/
    1. winform 如何获取局域网中所有打印机的状态?
    2. GDI RoundRect在Compact Framework的:使圆角矩形的外透明
    3. 引用jmail 实例化时出错!瞧瞧
    4. LINQ到SQL:的OnValidate()和自定义域模型类
    5. 怎么判断两个对象是不是相等
    6. 如何声明,它返回的“东西”的泛型集合的方法(C#)
    7. (1-2/15)^3.5的 3.5次方 怎么写
    8. MVC在c#中取胜。申请表格
    9. 文章沉,关于C# tcp服务器不稳定报错,详细错误信息和图片都有帮助
    10. C#中:发送从非活动窗口输入

     
    

    Copyright © 2017 CodeGo.net
    http://codego.net/xinwen/ 足球比分网 足球比分 医药招商网 邵阳县新闻