我有这段代码,希望可以将CRLF计入字符串的末尾。 它目前无法正常工作,我也看不到原因。
printf "text is [%s]", $text; # debug this
my $number = ( $text =~ /\R$/ );
sprintf "File has [%i] errant CRLFs at the EOF\n", $number;
答案 0 :(得分:2)
有两个问题。您需要使用全局匹配才能找到多个匹配项。另外,您的正则表达式仅匹配最后一个<div class="no-flick"></div>
因此,对于正则表达式,请使用与此\R
相匹配的m/\R(?=\R*$)/g
,其后必须跟0或多个\R
,然后是字符串的结尾。
另一个问题是此\R
不能返回匹配数目。如果存在匹配项,则返回my $number = ( $text =~ /\R$/ );
。为此,您应该使用while循环(对于正则表达式使用1
标志)
最后,最后一行应该是g
,而不是printf
:
sprintf
输出:
use strict;
use warnings;
my $text = "ASD
ASD
ASD
ASD
";
printf "text is [%s]", $text; # debug this
my $number = 0;
$number++ while $text =~ m/\R(?=\R*$)/g;
# # or use this instead:
# my $number = () = $text =~ m/\R(?=\R*$)/g;
printf "\n\nFile has [%i] errant CRLFs at the EOF\n", $number;