aasdasd-safasfasf-fgdfgds-asqweq-rgdfgdf-sdgvza-safascxz我想获取用-所分割开的字符串   这个字符串有可能是任意字符 也就是正则的 . 数量也不固定 我试过  .*-但这样他就直接匹配到最后一个-了  有没有办法 让他匹配到里第一个字符最近的呢??

解决方案 »

  1.   

    不是很明白
    如果你是要分割字符串
    直接用String.Split不就可以了么            string s = "aasdasd-safasfasf-fgdfgds-asqweq-rgdfgdf-sdgvza-safascxz ";
                string[] strs = s.Split('-');然后直接使用strs就好了
    想用哪个用哪个
      

  2.   

    总结一下: string s = "aasdasd-safasfasf-fgdfgds-asqweq-rgdfgdf-sdgvza-safascxz ";
     string[] strs = s.Split('-');
    int count=strs.length;
    //下面取-后的第一个元素
    string temp=strs[1];//结果就是safasfasf
      

  3.   

    改正:
    string temp=strs[1].tostring();//结果就是safasfasf
      

  4.   

    [.^-]*- 是不是这个正则啊? 不过用 string.Split不是更方便嘛?
      

  5.   

    这个只是一个比方  主要原因是我在写正则的时候 想匹配  axxxxxb   这几个字符  但是 后面还有一个 b
     他就匹配成最后一个的了
      

  6.   

    当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。使用非贪婪的就行了,你那个是贪婪模式,匹配最后一个了
      

  7.   

    ^[\-_\.\*\\\+\=\#\$\@\~\!\;\?\|\/\%\^\&]$
    这个不知道成不。
      

  8.   


                Regex reg = new Regex("a[^b]*b");
                int indexExpression = 0;
                string str = "aasdabsd-bsafasfasf-fgdfbgds-asqweq-rgdfgdf-sdgvza-safascxz";
                foreach (Match match in reg.Matches(str))
                {
                    //str = str.Replace(match.Value, "{" + (indexExpression++).ToString() + "}");
    Console.WriteLine((indexExpression++).ToString());
    Console.WriteLine(match.Value);            }a[^b]*b
    就是以a开始的到第一个b结束时的匹配
    You can just try it