Frage : Reguläre Ausdruck-Perl



Hallo,

Ich versuche, ein Datumfeld mit Format zu analysieren

dd/mm/YYYY HH: Millimeter: SS

manchmal hat das Datum nur eine Stelle und einmal hat das HH nur
eine Stelle
Beispiel des Einganges

7/03/2001 9:09: 18.034449599, BGC, WCOM, C3400

Ich möchte jedes Feld des Datums betrachten, wenn es nur Stelle I gibt
0 vor ihm, Beispiel verketten, wenn der Tag 7 ist, die ich 07 setze,
wenn die Stunde 9 ist, setze ich 09. Ich wünsche auch zum elimnate den Raum.

so für den Eingang über dem gewünschten Ausgang

ist
07/03/200109: 09: 18.034449599, BGC, WCOM, C3400

:

Ich bin in der Lage, das DD zu lokalisieren und den Raum zu entfernen aber, wenn ich nicht imstande bin
zu den Millimeter und das HH lokalisieren

Beispiel:

#! /usr/bin/perl

#use streng;

Warnungen verwenden;
mein $inputFile;
mein $inputname = „Sample1Date.txt“;
mein $outputfile;
mein $outputname = „Sample1Date_output.txt“;
mein $line;
meine @lineParts;
mein @linePartsDay;
mein @linePartsMonth;
mein $temp2= "";

öffnen (inputFile, „$inputname“);
#open ($inputFile, „<>öffnen sich ($outputfile, „>$outputname“) || sterben „kann Ausgabedatei nicht öffnen“;
mein $temp = "";

während ($line = )

{

       @lineParts = spalteten „\,“, $line auf;
       mein $date = $lineParts [0];
       @linePartsDay = „\/“ aufspalten, $date;
       mein $day = $linePartsDay [0];
       Druck„Tag: $day \ n“;

       #@linePartsMonth = spaltete „\ ^ auf (\ d {2}/\ d {2}/)“, $date;
       @linePartsMonth = spaltete „\ ^ (/)“, $date auf;

       mein $month = $linePartsMonth [0];
       Druck„Monat: $month \ n“;


       #$temp2 = $date;
       =~ #$temp2 s (\ s) +;

       #$date = $temp2;   # Räume mitten in Datum entfernen
       Druck„Datum: $date \ n“;
       mein $number1 = $lineParts [1];
       mein $donor = $lineParts [2];
       mein $recipient = $lineParts [3];
       mein $routing = $lineParts [4];
       $temp = $date. „,“. $number1. „,“. $donor. „,“. $recipient. „,“. $routing;
       Druck $outputfile „$temp“;


}

#close $inputFile;

nahes $outputfile;

Ich erhalte:

Tag: 7 (OKAY) ich kann die Länge des Tages dann betrachten, wenn es nur 1 Stelle verkettet 0 vor ihm ist.
Monat: Datum: 7/03/20019: 09: 18
Datum: 7/03/20019: 09: 18

Ich kann nicht den Millimeter lokalisieren, sobald ich den Monat erhalte, den ich lokalisieren möchte
das yyyy das HH der Millimeter und die SS und jedes Feld überprüfen (sobald ich Isolat I habe
zum concate können).

Ich versuchte verschiedene reguläre Ausdrücke für die Isolierung des Monats aber nicht imstande…

       #@linePartsMonth = spaltete „\ ^ auf (\ d {2}/\ d {2}/)“, $date;
       @linePartsMonth = spaltete „\ ^ (/)“, $date auf;

       mein $month = $linePartsMonth [0];
       Druck„Monat: $month \ n“;

Können Sie zur Lokalisierung für Millimeter, YYYY HH Millimeter SS


Antwort : Reguläre Ausdruck-Perl

$_= „7/03/2001 9:09: 18.034449599, BGC, WCOM, C3400“;
s/ ? \ b (\ d) \ b/0$1/g;
Druck;
Weitere Lösungen  
 
programming4us programming4us