Perl 正则表达式用于在模式匹配之前全局插入换行符



我正在努力在匹配字符串之前插入换行符,该字符串由一个句点后跟 2 或 3 个字符(字母数字)并以另一个句点结尾。如果可能,这需要是作用于整个文件的单个语句。

类似 (?

$contents =~ s/.{2,3}./n.<what goes here?>./g;

具体来说,我正在通过两步过程处理许多目录记录的文件。第 1 步:从文件中删除所有回车符。第 2 步:查找文本字符串,例如 .AUTH 和 .再。甚至.856。并使这些中的每一个都成为新行的开头。我可以通过一长串特定的替换来做到这一点,

$contents=~s/.RE./n.RE./g;
$contents=~s/.AUTH./n.AUTH./g;
$contents=~s/.TITL./n.TITL./g;

但我的理解是,我也可以用一个语句更有效地做到这一点(使用正则表达式内置变量?

谢谢

汤姆

要删除所有换行符,请使用

$contents =~ s/n//g;

要添加所需的换行符,请使用

$contents =~ s/(?=[.][a-zd]{2,3}[.])/n/ig;
$contents =~ s/(.w{2,3}.)/n$1/;
使用

括号记住匹配的字符串,使用$1在替换部分中引用它。

最新更新