这个正则是啥意思啊 sourceLine = Regex.Replace(sourceLine, "(?i)(\\t)", " "); //"(?i)(\\t)" 这个正则是啥意思啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 (?i)后面匹配i(\这个是转义\t 为TAB)自己拿个例子试一下 http://baike.baidu.com/view/94238.htm自己看去吧 Regex.Replace替换i ignore忽略大小写替换为空,[\t]匹配空格/制表符 (?i)(\\t)前边括号里 是忽视大小写?后边的是 \t ? (?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*/ \t或者\T 替换为tab,即8个空格。 (?i)这个匹配模式是C#独有还是正则都有的啊,看过不少正则资料,没见过这个表达式...."(\\t)"应该和@"(\t)"是一样的吧,"(\\t)"和"(\t)"怎么是一样啊,无法理解啊..... 这个匹配模式不是.NET中独有的,关于匹配模式,参考.NET正则基础之——.NET正则匹配模式 以字符串形式声明的正则中,\要用\\进行转义,比如\d表示数字,在以字符串形式声明的正则中,需要写成"\\d",同样的道理,\t就要写成"\\t",这个应该是比较好理解的如果正则表达式中出现普通字符,那么它就会被解释为字符本身,比如"a"匹配的就是字符a,而我们知道,"\t"出现在字符串中时,它代表的是水平制表符,而如果它以这种形式出现在正则中时,它就是一个普通的字符,只是因为它是不可见字符,所以不能像"a"这样以单个字符表示,而必须以"\t"这种形式来表示而已所以说,一种是被当作正则表达式中的元字符,而另一种则是被当作普通字符来解释了,结果都是一样的同样的还有\r、\n、\v等等类似的字符,当然,\b有点特殊,作为元字符时表示单词边界,作为普通字符时表示响铃符 .net切分15G文本文件如何快速 C#生成的文本文件为什么里面没有内容0字节. 关于页面——如何做到这种效果 如何利用一个线程执行多个方法 C#的项目有没有这样的功能 本地数据写入到远程服务器数据库中 !~~!画图程序出了问题了,大侠们帮帮忙!~~! 为什么ReportViewer打印页数,总比实际页数多一页???? 多线程问题?求教 C# webapi 与wcf 优缺点对比 关于c#中 用const会导致潜在bug的问题 关于数据库连接的问题
自己拿个例子试一下
自己看去吧
i ignore忽略大小写
替换为空,[\t]匹配空格/制表符
(?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
*/
.NET正则基础之——.NET正则匹配模式 以字符串形式声明的正则中,\要用\\进行转义,比如\d表示数字,在以字符串形式声明的正则中,需要写成"\\d",同样的道理,\t就要写成"\\t",这个应该是比较好理解的如果正则表达式中出现普通字符,那么它就会被解释为字符本身,比如"a"匹配的就是字符a,而我们知道,"\t"出现在字符串中时,它代表的是水平制表符,而如果它以这种形式出现在正则中时,它就是一个普通的字符,只是因为它是不可见字符,所以不能像"a"这样以单个字符表示,而必须以"\t"这种形式来表示而已所以说,一种是被当作正则表达式中的元字符,而另一种则是被当作普通字符来解释了,结果都是一样的同样的还有\r、\n、\v等等类似的字符,当然,\b有点特殊,作为元字符时表示单词边界,作为普通字符时表示响铃符