Hi Experten,
ich habe ein - wie ich dachte - einfaches Problem.
ich möchte folgende Zeile von einem directoy parsen:
dr-x------ 0 4294967295 513 0 Sep 11 15:45 Start Menu
^
|
nicht !!
und zwar sollen die ersten 8 beliebig langen Folgen von whitespaces durch ein "/" ersetzt werden, d.h. alle bis auf das space im directory- bzw. filenamen. dafür möchte ich ein regex.Replace verwenden. wenns anders mit regex geht: auch gut!
das Ergebnis soll also wie folgt sein:
dr-x------/0/4294967295/513/0/Sep/11/15:45/Start Menu
soweit bin ich schon gekommen: \s+
wie sage ich nun meiner regex engine, daß dieser Ausdruck nur eine bestimmte Anzahl mal (8x) ersetzt wird ?
bin mir sicher, daß das für Euch kein Problem ist :-)
Tausend Danke im vorraus!
Grüsse,
Thomas
User since
2007-01-09
192
Artikel
BenutzerIn
Ich würde den String mit einem Regex in zwei Teile teilen, einer vor und inklusive der Uhrzeit und einer danach; dann so wie du es schon gemacht hast, den ersten Teil substituieren und beide wieder zusammenfügen.\n\n
<!--EDIT|GoodFella|1169220003-->
User since
2005-02-01
181
Artikel
BenutzerIn
Ich würde es so machen:
my $s = 'dr-x------ 0 4294967295 513 0 Sep 11 15:45 Start Menu';
$s = join('/', split(/ +/, $s, 9));
print "$s\n";
\n\n
<!--EDIT|sesth|1169220570-->
Gruß
Thomas
User since
2006-07-10
2611
Artikel
BenutzerIn
Wie man es machen könnte:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
my $str='dr-x------ 0 4294967295 513 0 Sep 11 15:45 Start Menu';
print "$str\n";
(my $str_out=$str)=~s!(?<=[\d-])\s+(?=\w)|(?<=\w)\s+(?=\d)!/!gi;
print "$str_out\n";
$str_out=join('/',split(/\s+/,$str,9));
print "$str_out\n";