Python Regex允许文件在每行中包含十进制数

Python Regex允许文件在每行中包含十进制数,python,regex,perl,Python,Regex,Perl,我试图使用正则表达式来验证我的文件只能包含十进制数、整数、空格和新行 例如,某些允许值为 文件1 文件2 我试着使用下面的正则表达式 /^((\d+\.?\d*\s*)+\n)+/ 我遗漏了什么?也许你应该逐行解析你的文件,忘记多行的事情。 您可能想尝试下面的一段Perl代码。它会打印与正则表达式不匹配的行号 my $num = qr/\d+(?:\.\d+)?/; while( <> ){ chomp; die "Error line $." unless m/

我试图使用正则表达式来验证我的文件只能包含十进制数、整数、空格和新行 例如,某些允许值为

文件1

文件2

我试着使用下面的正则表达式

/^((\d+\.?\d*\s*)+\n)+/

我遗漏了什么?

也许你应该逐行解析你的文件,忘记多行的事情。 您可能想尝试下面的一段Perl代码。它会打印与正则表达式不匹配的行号

my $num = qr/\d+(?:\.\d+)?/;

while( <> ){
    chomp;
    die "Error line $." unless m/^(?: $num (?:\s+ $num)* | \s* )$/x;
}
my$num=qr/\d+(?:\。\d+)/;
而(){
咀嚼;
除非m/^(?:$num(?:\s+$num)*|\s*)$/x;
}

考虑到您的评论,这里有另一个建议。 我根据你的数据检查了我的正则表达式,它正常工作了

$/ = undef; # slurp mode

my $num = qr/\d+(?:\.\d+)?/;
my $data = <>;

die "Error" unless $data =~ m/\A(?: ^(?: $num (?:\s+ $num)* | \s* )$)*\Z/xms;
$/=undef;#slurp模式
我的$num=qr/\d+(?:\。\d+);
我的$data=;
除非$data=~m/\A(?:^(?:$num(?:\s+$num)*\s*)$)*\Z/xms,否则为“错误”;

出了什么问题?你能给我们一个错误输出和有人参与的输出的例子吗?0.10 0.05 0.07 0.03 0.15 0.60 8 abc 10.5我的正则表达式也与此数据匹配,尽管它包含ABCY。你必须精确你的正则表达式,以定义到行末(
$
):尝试简单地在正则表达式中添加一美元:
/^(\d+.\d*\s*)+\n)+$/
此外,您可能需要在此处或此处添加\s*,以便在数字序列之前或之后留出一些间距。。。由您决定。我不想逐行迭代和检查此处\A匹配字符串$data的开头,\Z匹配字符串的结尾。^匹配行首,$匹配行尾。
my $num = qr/\d+(?:\.\d+)?/;

while( <> ){
    chomp;
    die "Error line $." unless m/^(?: $num (?:\s+ $num)* | \s* )$/x;
}
$/ = undef; # slurp mode

my $num = qr/\d+(?:\.\d+)?/;
my $data = <>;

die "Error" unless $data =~ m/\A(?: ^(?: $num (?:\s+ $num)* | \s* )$)*\Z/xms;