刚上班时无聊玩了玩正则..发现一个\n和\r的问题请看以下这2张图这个文本一共有5处换行(现在都不知道喊换行还是回车)..出来的结果太古怪了..到底啥是\n(换行是匹配什么)..\r(回车匹配的又是什么)诚心求解!
解决方案 »
- 下面三段代码,如何用循环写出?
- word转xml,请教SaveAs方法~~~
- C#获取 控制台命令参数
- 为什么同样的数据库连结语句在windows 窗体可运行,在ASP.NET下去显示用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败。连接字符串属性无效 '
- 导出openoffice2.1的问题
- 公司的一个xml文档,要求把文档中的全部信息读取到word中,共有四层节点
- 谁会串口C#编程?
- 提问:如何给一个自定义控件的DateTime属性加入默认值
- 我怎么在系统文件中没有找到system.web.dll,在IDE就可以引用,c#.net是不是可以象java一样可以打包成class
- 通过反射动态SHOW出的窗体 怎么传递参数
- c#datetime比较
- winfom发布问题
string test = @"1f2dsa1f3dsa456fdsaf1ds2af1dsa1fds2a3f123sda1fdsa
";
Regex regN = new Regex(@"[^\n]+");
Regex regR = new Regex(@"[^\r]+");
MatchCollection mc = regN.Matches(test);
richTextBox2.Text += "[^\\n]+匹配结果:\n";
foreach (Match m in mc)
{
richTextBox2.Text += "-Start-" + m.Value + "-End-\n";
}
richTextBox2.Text += "==========华丽的分割线==========\n";
richTextBox2.Text += "[^\\r]+匹配结果:\n";
mc = regR.Matches(test);
foreach (Match m in mc)
{
richTextBox2.Text += "-Start-" + m.Value + "-End-\n";
}
/*-----输出-----
[^\n]+匹配结果:
-Start-
-End-
-Start-
-End-
-Start-1f2dsa1f3dsa
-End-
-Start-
-End-
-Start-456
-End-
-Start-
-End-
-Start-fdsaf1ds2af1dsa1fds2a3f123sda1fdsa
-End-
==========华丽的分割线==========
[^\r]+匹配结果:
-Start-
-End-
-Start-
1f2dsa1f3dsa-End-
-Start-
-End-
-Start-
456-End-
-Start-
-End-
-Start-
fdsaf1ds2af1dsa1fds2a3f123sda1fdsa-End-
-Start-
-End-
*/
\r\n
\r\n
1f2dsa1f3dsa\r\n
\r\n
456\r\n
\r\n
fdsaf1ds2af1dsa1fds2a3f123sda1fdsa\r\n
\r\n
这样应该就清楚了吧[^\n]+ 是排除\n外的任意字符
[^\r]+ 是排除\r外的任意字符我们在RichTextBox等控件中敲一次Enter键,还原到字符串中,就是\r\n两个不可见字符的组合,注意下先后顺序就可以了
在不同的语言中使用正则,小数点.对\r和\n的匹配会有所差异
终于明白了,十分感谢!!!!我之前是想把一篇篇文章分成一行行..又不想用stream.readline..想用正则玩下用[^\n]或[^\r]都不行..老是匹配到空的东西..原来是这么一回事..用[^\n\r]+就行了..原来就是这么回事