原式少一个],补上得^[\\s&&[^\\n]]*\\n$
表示由非\\n组成的一行,win下换行符可能是\r\n,所以这样写意义不大。
我会写成
(?
用后省语句排除无内容的空行。
java逐行读取时,不会读出行尾符\r\n,正则会无效
可以直接去掉"".length()长度为0的字符串。。
正则如果整块文本替换也不是这么写的。要区分整块文本还是多行文本
1、你这个写法大概只有java正则表达式引擎才能支持
2、在方括号中不用两个\,一个才对
3、由于期望多行文本的匹配,所以得开启多行匹配模式,且不要用^和$
综上:[\s&&[^\n]]*\n
其实\s就是空格、制表符、回车符、换行符而已,故而更加通用(多种引擎均支持)的写法值得推荐,如下:
[\t\r ]*\n
对于:
^[\\s&&[^\\n]*\\n$
就不是合法的正则。
请改正后,再给你解释。
-----------
你这样的:
^[\\s&&[^\\n]]*\\n$
在我看来,就是个非法的,因为看起来就属于
中括号内部嵌套中括号的。
对于Python等语言中的正则来说,好像就是不允许的。
所以,还是那句话,应该说出你的本意:
想要匹配什么样的字符,
然后大家帮你写出比较合适的正则。
对于你这个正则,我视其为非法的,写的很粗糙的,不予置评。
----------
匹配空白行的话,可以这么写:
^\s+$