/ / Regex, aby plik mógł zawierać liczby dziesiętne w każdym wierszu - python, regex, perl

Regex pozwala, aby plik zawierał liczby dziesiętne w każdej linii - python, regex, perl

Próbuję użyć wyrażenia regularnego w celu sprawdzenia, czy mój plik może zawierać tylko liczby dziesiętne, spacje i nową linię Dla np. niektóre dozwolone wartości to

Plik1

0.10
0.05
0.07
0.03
0.15
0.60
8
10.5

File2

5 10.4
1.6766 4.2
3.9
9 4
1.67 3

Próbowałem użyć następującego wyrażenia regularnego

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

Co jestem ja chybianie?

Odpowiedzi:

2 dla odpowiedzi № 1

Może powinieneś parsować pliki po linii i zapomnieć o multilinii. Możesz wypróbować następujący fragment kodu Perla. Który wypisuje numer linii niepasujący do Twojego wyrażenia regularnego.

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

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

0 dla odpowiedzi nr 2

Biorąc pod uwagę twój komentarz, oto kolejna propozycja. Sprawdziłem moje wyroki na twoje dane i to działa.

$/ = undef; # slurp mode

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

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