string str2 = "aasda dsadfds fgdfg [server].dbmaser.dbo.table adsas fs ssdf.sdasd.fsdf sa.dbmaser.dbo.table  [sa].dbmaser.dbo.table";我想得到的结果:  [server].dbmaser.dbo.table adsas
  [sa].dbmaser.dbo.table 

解决方案 »

  1.   

    MatchCollection mc = Regex.Matches(str2,@"\[(?:server|sa)\][^ ]+");
    foreach(Match m in mc)
    {
        //m.Value;
    }
      

  2.   

    MatchCollection mc = Regex.Matches(str2,@"\[server\][^ ]+ [^ ]+|\[sa\][^ ]+");
    foreach(Match m in mc)
    {
        //m.Value;
    }修改一下。
      

  3.   

    我那个[]中的server,sa都不是固定的,不一定是什么。规则:[字符].字符.字符.字符
      

  4.   


    我想得到的结果:  [server].dbmaser.dbo.table adsas
      [sa].dbmaser.dbo.table 你的规则和例子前后矛盾
    string str2 = "aasda dsadfds fgdfg [server].dbmaser.dbo.table adsas fs ssdf.sdasd.fsdf sa.dbmaser.dbo.table [sa].dbmaser.dbo.table";
    Regex reg = new Regex(@"\[[^\[\]]*\]\S+");
    MatchCollection mc = reg.Matches(str2);
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Value + "\n";
    }