代码之家  ›  专栏  ›  技术社区  ›  Sam

从c中的正则表达式获取结果#

  •  0
  • Sam  · 技术社区  · 17 年前

    我有一个正则表达式,它提取名称-值对

    ([^=;]*)=([^;]*)
    
    "Data Source=server;Initial Database=myDB;foo=bar;"
    

    这很好用,我可以用

    m.Groups[0] // "Data Source=server"
    m.Groups[1] // "Data Source"
    m.Groups[2] // "Server"
    

    谢谢!

    3 回复  |  直到 17 年前
        1
  •  3
  •   Sean Bright Sean Stinehour    17 年前
    Regex r = new Regex("([^=;]*)=([^;]*)");
    
    MatchCollection mc = r.Matches("Data Source=server;Initial Database=myDB;foo=bar;");
    
    foreach (Match m in mc)
    {
        Console.WriteLine(m.Groups[0]);
        Console.WriteLine(m.Groups[1]);
        Console.WriteLine(m.Groups[2]);
    }
    
        2
  •  1
  •   aquinas    17 年前

    string thestring ="Data Source=server;Initial Database=myDB;foo=bar;";
    
    var keyVals = from kv in thestring.Split(new string[] { ";" },  StringSplitOptions.RemoveEmptyEntries)
    select new KeyValuePair<string,string>(kv.Split('=')[0],kv.Split('=')[1]);
    
    foreach (var keyVal in keyVals) {
      Console.WriteLine(keyVal.Key);
      Console.WriteLine(keyVal.Value);
    }
    
        3
  •  0
  •   Hamish Smith    17 年前

    Match.NextMatch()

         string text = "Data Source=server;Initial Database=myDB;foo=bar;";
    
         Regex re = new Regex("([^=;]*)=([^;]*)");
    
         var m = re.Match(text);
    
         while (m.Success)
         {
            Console.Out.WriteLine("variable: {0} equals {1}", m.Groups[1], m.Groups[2]);
            m = m.NextMatch();
         }
    

    看这个 MSDN page 获取更完整的代码示例