use strict; use warnings; use Regexp::Common qw(time); my $DATE = $RE{time}{tf}{-pat => 'mm-dd-yyyy'}; my @data = ; my @wanted = grep {/^$DATE(?!-[1-9])/} @data; print @wanted; __DATA__ 03-15-2021-1 21.1.0-s103 2021/03/15:14:16:39 21.1 21.10-s103 03-15-2021-2 21.1.0-s103 2021/03/15:14:16:39 21.1 21.10-s103 03-15-2021 21.1.0-s102 2021/03/15:04:00:09 21.1 21.10-s102