c:\program files\common files\svchost.exe
c:\program files\internet explorer\msvcrt.bak
c:\program files\internet explorer\msvcrt.dll
c:\program files\internet explorer\msvcrt.ebk
c:\winnt\system32\drivers\npf.sys
c:\winnt\system32\wpcap.dll
c:\winnt\system32\packet.dll
c:\winnt\system32\wanpacket.dll
c:\documents and settings\user name\local settings\temp\wmso.exe
c:\documents and settings\user name\local settings\temp\bcg5.tmp
这个是原始文本,其实,在我们进行文本处理的时候,我们可以这样把空行,用
\r\n(回车换行,先回车,后换行)
来替换掉.文本就是:
c:\program files\common files\relive.dll\r\n\r\nc:\program files\common files\svchost.exe\r\n\r\nc:\program files\internet explorer\msvcrt.bak\r\nc:\program files\internet explorer\msvcrt.dll\r\n\nc:\program files\internet explorer\msvcrt.ebk\r\n\r\n\r\n\r\nc:\winnt\system32\drivers\npf.sys\r\nc:\winnt\system32\wpcap.dll\r\nc:\winnt\system32\packet.dll\r\nc:\winnt\system32\wanpacket.dll\r\n\r\nc:\documents and settings\user name\local settings\temp\wmso.exe\r\nc:\documents and settings\user name\local settings\temp\bcg5.tmp\r\n\r\n\r\n
这一段文本是一个整体,没有回车,没有空隙和间隔,这是我们正在处理的文本,只不过回车换行是不可见字符,所以就不能看到,但是还是存在的.
所以,在处理的时候才会出现我们上面的情况.
有此,我们可以理解为什么
用\r\n匹配和替代后,
所有的\r\n都没有了,所以,文本,就成为了一个连接的纯字符文本了.
但是
\n\r
替换后,
中间的所有的\n\r都替代掉了,\r(\n\r……\n\r)\n,中间的部分都替代掉了。所以就剩最后的一个\r\n.
以上是我的一点理解。
[\d]{4}-[\d]{2}-[\d]{2}
这个是我看到的一个日期验证的正则表达式。
看起来能实现,因为
2006-6-6 肯定是不符合的,而
2006-06-06 肯定是符合的。
但是,我们来看,
2006-00-00 也肯定是符合的,但是,有意义吗?
2006-99-99 也肯定是符合的,但是,有意义吗?
答案,大家都知道,肯定没有意义。所以,我觉得这个表达式还有要改进的地方。
问题的关键是数值大小的限制,如何来限制?
我把它改进了一下:
[\d]{4}-[0-1][0-9]-[0-3][0-9]
我们乍一看,觉得可行,
2006-19-39 肯定符合,但是没有意义。
看来,还是有问题。
到现在,我也没有想清楚这个看似简单的问题如何来解决。
如果用这个表达式来检验日期的话,是不行的,还需要你进行数值范围的验证。
如果哪位朋友知道的话,请指点一二。谢谢。