Bist du sicher dass du
[A-Za-z0-9]*
meinst und nicht
[A-Za-z0-9]+Ich bin mir ehrlich gesagt nicht sicher, aber soweit ich weiß, steht das + doch in den RegEx für EIN od. mehrmaliges Vorkommen, der * hingegen für KEIN od. mehrmaliges Vorkommen oder?
Es muss ja nicht zwangsläufig ein Buchstabe drinstehen oder eine Zahl, es kann nur.
Was die Sache erschwert
"SC-FTP unsinniger Text" enthält 4 whitespace Zeichen, deutet also auf drei "" Variablen hin.
Codeerläuterung
\b steht für eine Wordboundery ist also die Grenze zwischen \W und \w
s///x
der x Modifier erlaubt es, dass Leerzeichen nicht als Whitespace interpretiert werden. Dadurch kann ich eine RE Lesbar gestalten.
Dafür muss ich jetzt aber whitespace explizit erwähnen: \s steht für genau ein Whitespace Zeichen.
Ich schreibe nochmals, diesmal um klar zu machen, dass Werte optional sind.
foreach( @data ){
s/^ \bSC-FTP \s
(?:[A-Za-z0-9]+)? \s
(?:[A-Za-z0-9]+)? \s
(?:[A-Za-z0-9]+)? \s
/SC-FTP Servername User ID Password /x;
}
und komprimiert:
s/^\bSC-FTP\s(?:[A-Za-z0-9]+)?\s(?:[A-Za-z0-9]+)?\s(?:[A-Za-z0-9]+)?\s/SC-FTP Servername User ID Password /;
Du musst dir absolute Gewissheit über das Format des Strings nach SC-FTP verschaffen.
mfg Beat
Woran ich arbeite:
[link:http://www.elcappuccino.ch/cgi/tok.pl?extern=1-pub-com3306-1@title=X-
<°)))o>< ><o(((°>o