0

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

就像是 (?):

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

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

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

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

谢谢,

汤姆

4

2 回答 2

1

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

$contents =~ s/\n//g;

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

$contents =~ s/(?=[.][a-z\d]{2,3}[.])/\n/ig;
于 2012-11-26T14:44:02.077 回答
-1
$contents =~ s/(\.\w{2,3}\.)/\n$1/;

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

于 2012-11-26T14:31:10.243 回答