public MatchCollection GetStr(string sourceStr, string regexStr)
        {
            sourceStr = Regex.Replace(sourceStr, "\\s{3,}", "");//
            sourceStr = sourceStr.Replace("\r", "");
            sourceStr = sourceStr.Replace("\n", "");            Regex Re = new Regex(regexStr);
            return Re.Matches(sourceStr);        }
我在分析一段代码遇到了困难请问一下正侧表达式\\s{3,}表示什么意思,为什么要替换的字符串为空字符串""呢?我已经知道这个\s表示所有的空格符,但是在\s的前面在加个\是不是把\\转换为一个\,还有sourceStr = sourceStr.Replace("\r", "");
            sourceStr = sourceStr.Replace("\n", "");
的替换字符串都为空"",不知道怎么回事望高手指点下

解决方案 »

  1.   

    \s 匹配任意的空白符 {n,} 重复n次或更多次 
    替换回车换行符
      

  2.   

    意思是说把sourceStr = Regex.Replace(sourceStr, "\\s{3,}", "");//
    匹配的字符串替换成回车换行符吗?
      

  3.   

    以字符串形式声明正则时,如果遇到转义符,需要进行二次转义
    sourceStr = Regex.Replace(sourceStr, "\\s{3,}", "");
    在.NET中有一种简化的写法,就是在字符串前加@
    sourceStr = Regex.Replace(sourceStr, @"\s{3,}", "");
    这一行代码的作用就是把连续的三个以上空白字符替换为空sourceStr = sourceStr.Replace("\r", "");
    sourceStr = sourceStr.Replace("\n", "");
    这两行是基本的字符串替换了,没有用到正则看最终返回的是MatchCollection,不知道是什么需求,应该没必要这么麻烦的