Welches Regex-Muster müsste ich verwenden, um unerwünschte Zeichen in diesem Format herauszufiltern?

Welches Regex-Muster müsste ich verwenden, um unerwünschte Zeichen in diesem Format herauszufiltern?
#!/usr/bin/perl
POSIX qw(strftime);
my $time =  strftime("%YT%mT%d TTTT%H:%M", localtime);
print ("Todays date and time is $time\n");

Ich bin ein bisschen eingerostet, was Regex angeht. Was wäre ein Muster, um die folgende Ausgabe zu suchen und zu ersetzen. 2014T03T21 TTTT15:37? Ich möchte nur, dass das Datum angezeigt wird. Wenn Sie eine andere Methode als Regex kennen, wäre das auch großartig.

Antwort1

Sie können diesen regulären Ausdruck verwenden, um das von Ihnen angegebene Muster abzugleichen, und die Erfassungsgruppen in Klammern, um die drei gewünschten Komponenten auszuwählen: (\d{4})T(\d{2})T(\d{2}) TTTT\d{2}:\d{2}

Dadurch werden Jahr, Monat und Datum erfasst. Beim Abgleich können Sie diese mit der folgenden Syntax drei Variablen zuweisen:

$time =~ m/(\d{4})T(\d{2})T(\d{2}) TTTT\d{2}:\d{2}/;
my ($year, $month, $day) = ($1, $2, $3);

Es gibt viele Online-Tools, die Regex-Muster erweitern und erklären.

verwandte Informationen