Umlaute in regulären Ausdrücken

31/08/2009 - 23:23 von qdl | Report spam
Hallo Gruppe,

nach jahrerlanger Abstinenz versuche ich mich wieder in Perl.

Es geht darum aus Dateinamen von JPEG-Bildern den Teil vor der
Dateiendung herauszufiltern. Es handelt sich um Fotos von Personen und
in den Dateinamen stehen eben deren Namen.

Mit

foreach $file (<*>){
if ($file=~/([\w\s,]+).(jpeg|jpg|JPG|JPEG)/){
$name = $1;
print($name)
}

geht das im Prinzip.

Problematisch wird es nur mit Umlauten, die in deutschen Namen gerne mal
vorkommen. Ganz naiv habe ich es mit

foreach $file (<*>){
if ($file=~/([\w\s,àöüÄÜÖß]+).(jpeg|jpg|JPG|JPEG)/){
$name = $1;
print($name)
}

versucht. Das bringt aber nichts. Womöglich muss man irgendetwas mit der
zeichenkodierung beachten. Da habe ich aber Null Plan von.

Kann mir da jemand auf die Sprünge helfen?

Ich arbeite mit MacOS X 10.5.8 und Perl 5.8.9, das ich mittels MacPorts
installiert habe.

Vielen Dank.

hs
 

Lesen sie die antworten

#1 Heiko Schlichting
01/09/2009 - 00:43 | Warnen spam
Holger Schulz wrote:
Mit

foreach $file (<*>){
if ($file=~/([\w\s,]+).(jpeg|jpg|JPG|JPEG)/){
$name = $1;
print($name)
}

geht das im Prinzip.



Da fehlt eine Klammer, aber folgendes sollte die Aufgabe erfüllen:

while (<*>) {
print "$1" if /(.*)\.jpe?g$/i;
}

Allerdings vermeide ich die Benutzung von "<*>" normalerweise.

Heiko

Ähnliche fragen