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
User since
2003-08-04
2145
Artikel
ModeratorIn + EditorIn
Was fehlt denn dann? Nur das "Da20050301" oder auch einer oder beide Unterstriche drumherum?
User since
2006-01-27
3890
Artikel
HausmeisterIn
Hi Flo,
das Codebeispiel geht davon aus, daß, wenn DaYYYYMMDD fehlt, auch nur ein Unterstrich da steht...
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!
User since
2003-08-04
14371
Artikel
ModeratorIn
als Online-Hilfe ist auch noch
http://www.regenechsen.de ganz gut. Die erklären die Regulären Ausdrücke ganz ausführlich...