none
正则表达式不太好,求指教! RRS feed

  • 问题

  • 我有2个字符串需要用正则表达式来取出:
    string a = "#(BBC.apple) #(BBC.eat_food) #(BBC.cat)#(BBC.dog)"
    //apple和eat_food中间有空格,cat和dog中没有
    string b = "aaaabbbbcccc abc ab ccc#(BBC.LOL) aaa vvv #(BBC.O)"
    //LOL前面是没有空格的直接连接ccc,O前面有空格
    假设
    #(BBC.apple) = apple
    #(BBC.eat_food) = eat_food
    #(BBC.cat) = cat
    #(BBC.dog) = dog
    #(BBC.LOL) = LOL
    #(BBC.O) = O
    请教怎么样吧#(BBC.###)这种格式都取出来,然后换成已知的名字(apple,eat_food ...)以后再把他们换回去,有空格的地方和没有空格的地方都没有变。
    2011年7月28日 5:58

答案

  •   private void button1_Click(object sender, EventArgs e)
        {
          string a = "#(BBC.apple) #(BBC.eat_food) #(BBC.cat)#(BBC. dog)";
    
          string parren = @"#\(BBC.(\w|\s)*\)";
          MatchCollection mc= Regex.Matches(a, parren, RegexOptions.IgnoreCase);
          for (int i = 0; i < mc.Count; i++)
          {
            MessageBox.Show(mc[i].Value);
          }
          MessageBox.Show(mc.Count.ToString());
    
        }
    


    http://blog.csdn.net/zx13525079024
    2011年7月29日 10:35
  • void Main()
    {
    	 string a = "#(BBC.apple) #(BBC.eat_food) #(BBC.cat)#(BBC. dog)";
    	 string b = "aaaabbbbcccc abc ab ccc#(BBC.LOL) aaa vvv #(BBC.O)";
    	 Regex reg=new Regex( @"#\(BBC\.([^)]+)\)");
    	 foreach(Match m in reg.Matches(a+b))
    	 {
    	   Console.WriteLine(m.Value);
    	 }
    	 a=reg.Replace(a,"$1");
    	 b=reg.Replace(b,"$1");
    	 Console.WriteLine(a);
    	 Console.WriteLine(b);
    	 
    	 /*
    	 #(BBC.apple)
    	#(BBC.eat_food)
    	#(BBC.cat)
    	#(BBC. dog)
    	#(BBC.LOL)
    	#(BBC.O)
    	apple eat_food cat dog
    	aaaabbbbcccc abc ab cccLOL aaa vvv O
    	 */
    }
    




    Best Regards,
    If a post answers your question, please click "Mark As Answer" on that post and "Mark as Helpful".
    2011年8月1日 0:51

全部回复

  •   private void button1_Click(object sender, EventArgs e)
        {
          string a = "#(BBC.apple) #(BBC.eat_food) #(BBC.cat)#(BBC. dog)";
    
          string parren = @"#\(BBC.(\w|\s)*\)";
          MatchCollection mc= Regex.Matches(a, parren, RegexOptions.IgnoreCase);
          for (int i = 0; i < mc.Count; i++)
          {
            MessageBox.Show(mc[i].Value);
          }
          MessageBox.Show(mc.Count.ToString());
    
        }
    


    http://blog.csdn.net/zx13525079024
    2011年7月29日 10:35
  • void Main()
    {
    	 string a = "#(BBC.apple) #(BBC.eat_food) #(BBC.cat)#(BBC. dog)";
    	 string b = "aaaabbbbcccc abc ab ccc#(BBC.LOL) aaa vvv #(BBC.O)";
    	 Regex reg=new Regex( @"#\(BBC\.([^)]+)\)");
    	 foreach(Match m in reg.Matches(a+b))
    	 {
    	   Console.WriteLine(m.Value);
    	 }
    	 a=reg.Replace(a,"$1");
    	 b=reg.Replace(b,"$1");
    	 Console.WriteLine(a);
    	 Console.WriteLine(b);
    	 
    	 /*
    	 #(BBC.apple)
    	#(BBC.eat_food)
    	#(BBC.cat)
    	#(BBC. dog)
    	#(BBC.LOL)
    	#(BBC.O)
    	apple eat_food cat dog
    	aaaabbbbcccc abc ab cccLOL aaa vvv O
    	 */
    }
    




    Best Regards,
    If a post answers your question, please click "Mark As Answer" on that post and "Mark as Helpful".
    2011年8月1日 0:51