Thread Regex für Timestamp matcht nicht so wie gewünscht
(25 answers)
Opened by GwenDragon at 2024-02-01 12:07
Linuxer gibt mal wieder hochwertige Antworten. Da mag man kaum etwas hinzufügen.
Komplexe RegExs sind mir oft zu viel (sog. "Zahnstocherkrankheit": Zu viele "/\\\///"). Ich komme besser klar, wenn ich mehrere einfachere RegEx daraus mache. Hier also meine (vielleicht etwas amateurhafte) Idee: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #!/usr/bin/perl use warnings; use strict; sub lstrip { my ($s, $a) = @_; my $alen = length($a); if ($alen >= length($s)) { return ""; } return substr($s, $alen); } sub matched { my $s = shift; my %h = (); if ($s =~ /(^\D)/) { $h{prefix} = $1; $s = lstrip($s, $h{prefix}); } if ($s =~ /(^\d+)/) { $h{firstnums} = $1; $s = lstrip($s, $h{firstnums}); } if ($s =~ /(^\.\d+)/) { $h{pointandnums} = $1; $s = lstrip($s, $h{pointandnums}); } if ($s eq "") { return 1; } else { return 0; } } my @b = qw(+12345.777 !1234 +123A1234.11 !12X1234.987); my $i; for $i (@b) { print "$i\t" . matched($i) . "\n"; } |