sourceLine = Regex.Replace(sourceLine, "(?i)(\\t)", "    ");
 //"(?i)(\\t)" 这个正则是啥意思啊

解决方案 »

  1.   

     (?i)后面匹配i(\这个是转义\t 为TAB)
    自己拿个例子试一下
      

  2.   

    http://baike.baidu.com/view/94238.htm
    自己看去吧
      

  3.   

    Regex.Replace替换
    i ignore忽略大小写
    替换为空,[\t]匹配空格/制表符
      

  4.   

    (?i)(\\t)前边括号里 是忽视大小写?后边的是 \t ?
      

  5.   


    (?i)(\\t)
    (?i) 是匹配模式,表示忽略大小写,只有正则表达式中出现了大小写字符时才有意义,在这个表达式里没有意义,可以去掉,表在式剩下(\\t)
    由于是替换,结果中没有出现对捕获组的引用,所以这里的()没有意义,可以去掉,表达式剩下\\t
    因为这里是以字符串形式声明的正则,实际表达式为\t,也就是水平制表符
    所以整个表达式的意思,就是把水平制表符替换为4个空格
    由于在字符串中\t即为水平制表符,所以以字符串形式声明的正则中使用\\t和\t的效果一样
    //为了使输出效果明显,这里替换为&&&&
    string sourceLine = "a\tb c\\td";
    //sourceLine = Regex.Replace(sourceLine, "(?i)(\\t)", "&&&&");  两种形式的正则输出是一样的
    sourceLine = Regex.Replace(sourceLine, "(?i)(\t)", "&&&&");
    richTextBox2.Text = sourceLine;
    /*-----输出-----
    a&&&&b c\td
    */但这样一分析,完全没必要用正则,直接使用string的方法即可
    string sourceLine = "a\tb c\\td";
    sourceLine = sourceLine.Replace("\t", "&&&&");
    richTextBox2.Text = sourceLine;
    /*-----输出-----
    a&&&&b c\td
    */
      

  6.   

    \t或者\T 替换为tab,即8个空格。
      

  7.   

    (?i)这个匹配模式是C#独有还是正则都有的啊,看过不少正则资料,没见过这个表达式...."(\\t)"应该和@"(\t)"是一样的吧,"(\\t)"和"(\t)"怎么是一样啊,无法理解啊.....
      

  8.   

    这个匹配模式不是.NET中独有的,关于匹配模式,参考
    .NET正则基础之——.NET正则匹配模式 以字符串形式声明的正则中,\要用\\进行转义,比如\d表示数字,在以字符串形式声明的正则中,需要写成"\\d",同样的道理,\t就要写成"\\t",这个应该是比较好理解的如果正则表达式中出现普通字符,那么它就会被解释为字符本身,比如"a"匹配的就是字符a,而我们知道,"\t"出现在字符串中时,它代表的是水平制表符,而如果它以这种形式出现在正则中时,它就是一个普通的字符,只是因为它是不可见字符,所以不能像"a"这样以单个字符表示,而必须以"\t"这种形式来表示而已所以说,一种是被当作正则表达式中的元字符,而另一种则是被当作普通字符来解释了,结果都是一样的同样的还有\r、\n、\v等等类似的字符,当然,\b有点特殊,作为元字符时表示单词边界,作为普通字符时表示响铃符