Cuestión : Perl de las expresiones regulares



Hola,

Estoy intentando analizar un campo de la fecha con formato

dd/mm/YYYY HH: Milímetro: SS

la fecha tiene a veces solamente un dígito y el HH tiene alguna vez solamente
un dígito
ejemplo de la entrada

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

Quiero mirar cada campo de la fecha si hay solamente el dígito I
concatenar un 0 delante de él, ejemplo si el día es 7 que pongo 07,
si la hora es 9 pongo 09. También quiero al elimnate el espacio.

tan para la entrada sobre la salida deseada

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

:

Puedo aislar la DD y quitar el espacio pero cuando no puedo
para aislar el milímetro y el HH

ejemplo:

¡#! /usr/bin/perl

#use terminante;

utilizar las advertencias;
mi $inputFile;
mi $inputname = “Sample1Date.txt”;
mi $outputfile;
mi $outputname = “Sample1Date_output.txt”;
mi $line;
mis @lineParts;
mi @linePartsDay;
mi @linePartsMonth;
mi "" de $temp2=;

abrirse (inputFile, “$inputname”);
#open ($inputFile, “<>se abren ($outputfile, “>$outputname”) || morir “no puede abrir el archivo de salida”;
mi $temp = "";

mientras que ($line = )

{

       los @lineParts = partieron “\,”, $line;
       mi $date = $lineParts [0];
       @linePartsDay = partir “\/”, $date;
       mi $day = $linePartsDay [0];
       día de la impresión “: $day \ n”;

       el #@linePartsMonth = partió “\ ^ (\ d {2}/\ d {2}/)”, $date;
       el @linePartsMonth = partió “\ ^ (/)”, $date;

       mi $month = $linePartsMonth [0];
       mes de la impresión “: $month \ n”;


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

       #$date = $temp2;   # quitar los espacios en el medio de fecha
       fecha de la impresión “: $date \ n”;
       mi $number1 = $lineParts [1];
       mi $donor = $lineParts [2];
       mi $recipient = $lineParts [3];
       mi $routing = $lineParts [4];
       $temp = $date. “,”. $number1. “,”. $donor. “,”. $recipient. “,”. $routing;
       impresión $outputfile “$temp”;


}

#close $inputFile;

$outputfile cercano;

Consigo:

día: 7 (ACEPTABLE) puedo entonces mirar la longitud del día si es solamente 1 dígito concatena un 0 delante de él.
mes: fecha: 7/03/20019: 09: 18
fecha: 7/03/20019: 09: 18

No sé aislar el milímetro, una vez que consigo el mes que quisiera aislar
el yyyy el HH el milímetro y los SS y comprobar cada campo (una vez que tengo aislante I
saber al concate).

Intenté las varios expresiones regulares para aislar el mes pero incapaz…

       el #@linePartsMonth = partió “\ ^ (\ d {2}/\ d {2}/)”, $date;
       el @linePartsMonth = partió “\ ^ (/)”, $date;

       mi $month = $linePartsMonth [0];
       mes de la impresión “: $month \ n”;

Usted sabe al aislamiento para el milímetro, YYYY HH milímetro SS


Respuesta : Perl de las expresiones regulares

$_= “7/03/2001 9:09: 18.034449599, BGC, WCOM, C3400”;
s/ ¿? \ b (\ d) \ b/0$1/g;
impresión;
Otras soluciones  
 
programming4us programming4us