我正在努力在匹配字符串之前插入换行符,该字符串由一个句点后跟 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在替换部分中引用它。