Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7748[/thread]

reg. Exp. mit Dateinamen

Leser: 2


<< >> 5 Einträge, 1 Seite
Gast Gast
 2006-03-01 12:33
#63360 #63360
Hallo,

ich habe einen Dateinamen der so aufgebaut ist:

NaFlorian_Da20050301_Nr025_PfTestpfad.txt

Als erstes lasse ich mit reg. Exp. den Dateinamen verschwinden und danach alle _ in , umwandeln! Dies funktioniert auch alles! Jetzt kann aber sein, dass in einem Dateinamen kein Da..... vorhanden ist und dafür soll einfach ein Leerzeichen entstehen also Dann NaFlorian, ,Nr025,PfTestpfad!

Wisst ihr wie sowas funktioniert! Bekomme es irgendwie nicht richtig hin!

Danke für ein kleines Beispiel!

Flo
Dubu
 2006-03-01 15:42
#63361 #63361
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Was fehlt denn dann? Nur das "Da20050301" oder auch einer oder beide Unterstriche drumherum?
renee
 2006-03-01 15:44
#63362 #63362
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
my $string = 'NaFlorian_Da20050301_Nr025_PfTestpfad.txt';

$string =~ tr/_/,/;

unless($string =~ /,Da\d+/){
$string =~ s/,/, ,/;
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Linuxer
 2006-03-04 19:34
#63363 #63363
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi Flo,

das Codebeispiel geht davon aus, daß, wenn DaYYYYMMDD fehlt, auch nur ein Unterstrich da steht...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
my @ff = qw/
NaFlorian_Da20050301_Nr025_PfTestpfad.txt
NaFlorian_Nr025_PfTestpfad.txt
/;

# fuer jeden Dateinamen
for ( @ff ) {
m{
^ # Stringanfang
([^_]+) # Wort bis zum ersten _ einfangen
(?: # gruppierende Klammer
_(Da[^_]+) # moegliches Da... einfangen
)? # das gruppierte kann einmal oder gar nicht auftauchen
_
([^_]+) # Nr... einfangen
_
([^_]+) # Pfad einfangen
\. # echter Punkt
.* # Dateiendung
$ # Stringende
}x; # RegEx Ende

print "$1," . ($2 ? $2 : ' ' ) . ",$3,$4", $/;
}


perldoc perlrequick
perldoc perlretut
perldoc perlre
perldoc perlop (search 4 ternary)

http://perldoc.perl.org/perlrequick.html
http://perldoc.perl.org/perlretut.html
http://perldoc.perl.org/perlre.html
http://perldoc.perl.org/perlop.....-%3f%3a\n\n

<!--EDIT|Linuxer|1141495662-->
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
renee
 2006-03-05 15:12
#63364 #63364
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
als Online-Hilfe ist auch noch http://www.regenechsen.de ganz gut. Die erklären die Regulären Ausdrücke ganz ausführlich...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 5 Einträge, 1 Seite



View all threads created 2006-03-01 12:33.