今天拿到一分有多余空行的js文件,
准备使用正则表达式来删除空行。
没有删除空行前是这样的:
在notepad++中使用正则\r\n替换后,竟然是这样的:
这不对啊,怎么糊成一坨了啊,
我明明只想删除空行来着。
我意识到可能是windows下的回车换行问题,赶快去百度了下,
结果越看越迷糊,
有人说换行是 \r\n
有人说是 \n\r
runoob上提供的删除空行的正则表达式为:\n\s*\r
经过实测,删除空行的这个正则表达式是正确的,删除后的效果如图:
又经过一番测试我发现,
按下回车正确代表的是 \r\n
,
假设:
第 1 行有文字的,是以\r\n
结尾,
第 2 行空行,以\r\n
结尾,
第 3 行有文字,以\r\n
结尾。
因此,以正则匹配\n\s*\r
时,
删除了第1行结尾的\n,
删除了第2行的空白,包括任何空白字符,包括空格、制表符、换页符等,
删除了第2行结尾的\r,
剩下的就是第1行的\r和第2行的\n,组合成新的换行符\r\n
,
这样就正确实现了删除空白行的需求了。