日期:2014-05-20  浏览次数:20866 次

几个正则表达式的简单问题
"192 ".matches( "\\d[0-2]\\d[0-9]\\d[0-9] ");
"192 ".matches( "\\d[0-2]\\d\\d ");
"a ".matches( "[a-z]A-Z ");
"a ".matches( "a-z[A-Z] ");
"a ".matches( "[a-z]&&[abc] ");
我认为是true,结果是都为false,为什么啊?
另外:判断空行为什么用:( "^[\\s&&[^\\n]]*$ ")不太明白,第一个字符为什么不能是\n
*$有什么用?


------解决方案--------------------
[\\s&&[^\\n]] 表示除换行符之外的空白字符(空白字符包括空格、Tab、换行等)。
这里不是判断是否第一个字符,而是在判断字符串中是不是只包括非换行的空白字符。
换句话说,如果这一行里包含的都是空格或者TAB,那么这一行也算是空行。
如果有\n了,那么这就不是一行而是两行了,判断的前提就不成立,所以要去掉\n。