linux-l: regexpr

Steffen Dettmer steffen at dett.de
Sa Sep 8 18:03:58 CEST 2001


* Ulrich Wiederhold wrote on Sat, Sep 08, 2001 at 00:55 +0200:
> > $file =~ s/([\s\(_][a-z]{0,1})/uc($1)/ge;
> 
> Fast. Allerdings wird der 1. Buchstabe im 1. Wort nicht großgeschrieben.

Ich hab:

$file = "(This Artist)_-_04 - It´s a better Live without winDows.mp3";
$file = lc($file);
$file =~ s/(^|\s+)([a-z])/uc($1)/ge;
print "$file\n";

Also: groß nach Zeilenanfang oder nach whitespace (\s+). Wenn
auch Unterstriche "whitespaces" sind, dann eben:

$file =~ s/(^|[\s_]+)([a-z])/$1 . uc($2)/ge;

Aber blöd, denn Wortanfang ist nicht so einfach zu definieren.
"'" ist kein Zeichen vorm Wortanfang, "(" schon.

Ich würde vermutlich:

$file =~ s/(
            ^               #Zeilenanfang
            |               #oder
            [^a-z'`´]       #nicht-Wortzeichen
            |               #oder
            _               #Unterstrich
           )
           ([a-z])          #gefolgt von Buchstaben
           /$1 . uc($2)/xge;#tauschen gegen Vorzeichen und großem Buchstaben

Schreiben. Kann man dann auch lesen :)

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.



Mehr Informationen über die Mailingliste linux-l