我正在努力在匹配字符串之前插入换行符,该字符串由一个句点后跟2或3个字符(字母数字)并以另一个句点结尾。如果可能,这需要是一个作用于整个文件的单个语句。
像(?):
$contents =~ s/\.{2,3}\./\n\.<what goes here?>\./g;
具体来说,我正在分两步处理许多目录记录的文件。 第1步:从文件中删除所有回车符。 第2步:查找.AUTH等文本字符串。和.RE。甚至.856。并使这些中的每一个成为新线的开始。我可以用一系列特定的替代品做到这一点,
$contents=~s/\.RE\./\n\.RE\./g;
$contents=~s/\.AUTH\./\n\.AUTH\./g;
$contents=~s/\.TITL\./\n\.TITL\./g;
但我的理解是,我也可以使用单个语句更有效地执行此操作(使用正则表达式内置变量?)
谢谢,
汤姆
答案 0 :(得分:1)
要删除所有换行符,请使用
$contents =~ s/\n//g;
要添加所需的换行符,请使用
$contents =~ s/(?=[.][a-z\d]{2,3}[.])/\n/ig;
答案 1 :(得分:-1)
$contents =~ s/(\.\w{2,3}\.)/\n$1/;
使用括号记住匹配的字符串,使用$ 1在替换部分中引用它。