1

我有以下正则表达式来尝试减少换行符组:

s/(\n|\r\n|\n\r)(\n|\r\n|\n\r)(\n|\r\n|\n\r)+/\n\n/gmi;

它开始于:

s/\n\n(\n)+/\n\n/gmi

我希望将连续的换行数减少到最多连续两个(只是尝试对我为内部 wiki 导入的一些文件进行一些清理)。数据有几行 CRLF 分布在其中(Windows 数据文件)。然而,它似乎不起作用。

我究竟做错了什么?这是一个错误的示例:

开始于:

添加了菜单和工具栏定位的缺失选项</p>

</div>

</正文>

</html>

我正在剥离 HTML 标签,所以它最终是这样的:

添加了菜单和工具栏定位的缺失选项





然后我应用正则表达式,结果如下:

添加了菜单和工具栏定位的缺失选项



4

3 回答 3

6

还尝试匹配这些换行符周围剩余的任何其他空格:

s/(\r?\n[ \t]*){2,}/\n\n/g;
于 2009-06-08T15:25:44.387 回答
1

由于您似乎无法应用给出的答案,也许您可​​以向我们展示您的一些实际数据,

use Data::Dumper;
$Data::Dumper::Useqq = 1;
print Dumper $slurped_file;

您可能还想尝试一次通过删除任何 \r 字符,然后您原来的仅换行符替换。

于 2009-06-08T15:43:25.583 回答
0

您是否尝试过像这样匹配多个组?

(\r\n){2,}/\n\n
于 2009-06-08T15:25:57.100 回答