Questione : Perl di espressioni normali



Ciao,

Sto provando a analizzare un campo della data con la disposizione

dd/mm/YYYY HH: Millimetro: Ss

a volte la data ha soltanto una cifra ed un momento il HH ha soltanto
una cifra
esempio di input

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

Voglio esaminare ogni campo della data se ci è soltanto cifra I
concatenargli un 0, esempio se il giorno è 7 che metto 07,
se l'ora è 9 metto 09. Inoltre voglio a elimnate lo spazio.

così per l'input sopra l'uscita voluta

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

:

Posso isolare il dd e rimuovere lo spazio ma quando non posso
per per isolare il millimetro e il HH

esempio:

#! /usr/bin/perl

#use rigoroso;

usare gli avvertimenti;
il mio $inputFile;
mio $inputname = “Sample1Date.txt„;
il mio $outputfile;
mio $outputname = “Sample1Date_output.txt„;
il mio $line;
i miei @lineParts;
il mio @linePartsDay;
il mio @linePartsMonth;
il mio "" di $temp2=;

aprir (inputFile, “$inputname„);
#open ($inputFile, “<>si aprono ($outputfile, “>$outputname„) || morire “non può aprire l'archivio di uscita„;
mio $temp = "";

mentre ($line = )

{

       i @lineParts = hanno spaccato “\,„, $line;
       mio $date = $lineParts [0];
       @linePartsDay = spaccare “\/„, $date;
       mio $day = $linePartsDay [0];
       giorno della stampa “: $day \ n„;

       il #@linePartsMonth = ha spaccato “\ ^ (\ d {2}/\ d {2}/)„, $date;
       il @linePartsMonth = ha spaccato “\ ^ (/)„, $date;

       mio $month = $linePartsMonth [0];
       mese della stampa “: $month \ n„;


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

       #$date = $temp2;   # rimuovere gli spazi verso la metà della data
       data della stampa “: $date \ n„;
       mio $number1 = $lineParts [1];
       mio $donor = $lineParts [2];
       mio $recipient = $lineParts [3];
       mio $routing = $lineParts [4];
       $temp = $date. “,„. $number1. “,„. $donor. “,„. $recipient. “,„. $routing;
       stampa $outputfile “$temp„;


}

#close $inputFile;

$outputfile vicino;

Ottengo:

giorno: 7 (GIUSTO) posso allora esaminare la lunghezza del giorno se è soltanto 1 cifra gli concatena un 0.
mese: data: 7/03/20019: 09: 18
data: 7/03/20019: 09: 18

Non so isolare il millimetro, una volta che ottengo il mese che vorrei isolare
il yyyy il HH il millimetro e gli ss e controllare ogni campo (una volta che ho isolato I
conoscere come a concate).

Ho provato le vari espressioni normali per l'isolazione del mese ma incapace…

       il #@linePartsMonth = ha spaccato “\ ^ (\ d {2}/\ d {2}/)„, $date;
       il @linePartsMonth = ha spaccato “\ ^ (/)„, $date;

       mio $month = $linePartsMonth [0];
       mese della stampa “: $month \ n„;

Conoscete come all'isolamento per il millimetro, YYYY HH IL millimetro ss


Risposta : Perl di espressioni normali

$_= “7/03/2001 di 9:09: 18.034449599, BGC, WCOM, C3400„;
s/ ? \ b (\ d) \ b/0$1/g;
stampa;
Altre soluzioni  
 
programming4us programming4us