Regex 为什么';我的正则表达式不能折叠换行符组吗?

Regex 为什么';我的正则表达式不能折叠换行符组吗?,regex,perl,newline,Regex,Perl,Newline,我使用以下正则表达式来减少换行符组: s/(\n|\r\n|\n\r)(\n|\r\n|\n\r)(\n|\r\n|\n\r)+/\n\n/gmi; s/(\r?\n[ \t]*){2,}/\n\n/g; 一开始是: s/\n\n(\n)+/\n\n/gmi 我希望将连续换行的行数减少到最多两行(只是尝试对我为内部wiki导入的一些文件进行清理)。 数据中有几行CRLF分布在其中(Windows数据文件)。 然而,它似乎不起作用 我做错了什么?下面是一个错误的示例: 开头为: added

我使用以下正则表达式来减少换行符组:

s/(\n|\r\n|\n\r)(\n|\r\n|\n\r)(\n|\r\n|\n\r)+/\n\n/gmi;
s/(\r?\n[ \t]*){2,}/\n\n/g;
一开始是:

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

我做错了什么?下面是一个错误的示例:

开头为:

added missing options for Menu and toolbar positioning</p> </div> </body> </html> added missing options for Menu and toolbar positioning added missing options for Menu and toolbar positioning 添加了缺少的菜单和工具栏定位选项

我正在剥离HTML标记,因此结果如下:

added missing options for Menu and toolbar positioning</p> </div> </body> </html> added missing options for Menu and toolbar positioning added missing options for Menu and toolbar positioning 添加了缺少的菜单和工具栏定位选项 然后我应用正则表达式,结果是:

added missing options for Menu and toolbar positioning</p> </div> </body> </html> added missing options for Menu and toolbar positioning added missing options for Menu and toolbar positioning 添加了缺少的菜单和工具栏定位选项
还可以尝试匹配这些换行符周围剩余的任何其他空白:

s/(\n|\r\n|\n\r)(\n|\r\n|\n\r)(\n|\r\n|\n\r)+/\n\n/gmi;
s/(\r?\n[ \t]*){2,}/\n\n/g;

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

s/(\n|\r\n|\n\r)(\n|\r\n|\n\r)(\n|\r\n|\n\r)+/\n\n/gmi;
s/(\r?\n[ \t]*){2,}/\n\n/g;

你试过这样匹配你的多个群组吗

(\r\n){2,}/\n\n

你试过这样匹配你的多个群组吗

(\r\n){2,}/\n\n

由于您似乎在应用所给出的答案时遇到了问题,也许您可以向我们展示一些您的实际数据,并

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

您可能还想尝试一次删除所有字符,然后替换原来的换行符。

由于您似乎在应用给定的答案时遇到问题,也许您可以向我们展示一些实际数据,包括

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

您可能还想尝试一次删除所有字符,然后替换原来的换行符。

这会将一组6减少到一组4。。。我不知道为什么它没有减少到只有2?无用的使用/m/m只影响^1和$match。@Daemonic:对我有效:perl-we'$x=“\r\n”x 6$x=~s/(\r?\n){2,}/\n\n/gmi;使用数据::转储程序$数据::转储程序::Useqq=1;打印转储程序$x'$VAR1=“\n\n”/我也是多余的:)已修复。@Daemonic:行中有空格。试试我的最新版本。这将从一组6减少到一组4。。。我不知道为什么它没有减少到只有2?无用的使用/m/m只影响^1和$match。@Daemonic:对我有效:perl-we'$x=“\r\n”x 6$x=~s/(\r?\n){2,}/\n\n/gmi;使用数据::转储程序$数据::转储程序::Useqq=1;打印转储程序$x'$VAR1=“\n\n”/我也是多余的:)已修复。@Daemonic:行中有空格。试试我的最新版本。开始时:为菜单和工具栏定位添加缺少的选项/p/div/body/html我正在剥离html标记,因此结果如下:为菜单和工具栏定位添加缺少的选项,然后应用正则表达式,结果是:为菜单和工具栏定位添加缺少的选项hmmm。。。pre在评论中不起作用。我将把它添加到原始问题中。开始时:添加了菜单和工具栏定位缺少的选项/p/div/body/html我正在剥离html标记,结果是这样的:为菜单和工具栏定位添加了缺少的选项,然后我应用正则表达式,结果是:为菜单和工具栏定位添加了缺少的选项hmmm。。。pre在评论中不起作用。我将把这一点添加到原始问题中。请参阅我的建议,说明如何以我们可以看到其实际组成的方式最好地显示您的输入/输出。请参阅我的建议,说明如何以我们可以看到其实际组成的方式最好地显示您的输入/输出。