例如一个字符串
string str="21335234324ab21321345cd92798374992ab98320480238409cd908234";找出"ab"与"cd"之间的字符串结果“ab21321345cd”和 “ab98320480238409cd”

解决方案 »

  1.   

    第一,用正则
    第二,用KMP算法,找到ab和cd的位置,然后SubString
      

  2.   

    public int IndexOf(string value, int startIndex);
    public string Substring(int startIndex, int length);用string的IndexOf找出ab和cd的位置,然Substring
      

  3.   


                string str = "21335234324ab21321345cd92798374992ab98320480238409cd908234";
                foreach (Match m in Regex.Matches(str, @"ab.+?cd"))
                    Console.WriteLine(m.Value);
      

  4.   

    与一楼差不多了法一,正则表达式
    法二,
    21335234324ab21321345cd92798374992ab98320480238409cd908234 查找第一个ab位置,截取右边所有字符为21321345cd92798374992ab98320480238409cd908234,再查找cd位置,截取左边的,,重复上面的方法,直到找不cd,。。cd左边就是你要的数据了
      

  5.   

    using System.Text.RegularExpressions; string str = "21335234324ab21321345cd92798374992ab98320480238409cd908234";
                List<string> ls = new List<string>();
                foreach (Match m in Regex.Matches(str, @"ab.+?cd"))
                {
                    ls.Add(m.Value);
                }
    ls里是你要的数据
      

  6.   

    其实我源码那个字符串是想查找
    string str = "32329929<?xml><root>342324</root>2324324<?xml><root>awewesa</root>234234saassa";
    就是要找到"<?xml><root>342324</root>"
    和"<?xml><root>awewesa</root>"
    正则貌似问题好多!!
      

  7.   

    那你还不如用XmlDocument来解释呢,比正则方便且效率比正则高
      

  8.   

    可惜那个字符串是不规则的XmlDocument。。怎么解释啊!!!
      

  9.   


                string str = "32329929<?xml><root>342324</root>2324324<?xml><root>awewesa</root>234234saassa";
                Regex reg = new Regex(@"(?<=<root[^>]*?>)(?:(?!</?root).)*");
                foreach (Match m in reg.Matches(str))
                    Console.WriteLine(m.Value);
    /*
    342324
    awewesa
    */
      

  10.   

    不是要中间的值。是要整个<xml>的字符串找到"<?xml><root>342324</root>"
    和"<?xml><root>awewesa</root>"
      

  11.   

    root会出现多个吗?会的话要重新写,只有一个的话这样就可以。
                string str = "32329929<?xml><root>342324</root>2324324<?xml><root>awewesa</root>234234saassa";
                Regex reg = new Regex(@"<\?xml[^>]*?>.*?</root>");
                foreach (Match m in reg.Matches(str))
                    Console.WriteLine(m.Value);