[vienna.pm] genau ein whitespace ersetzen ????

roland.bauer at fff.at roland.bauer at fff.at
Tue May 29 18:09:22 CDT 2001


* * * vienna-pm-list * * *


> Willst Du alle Spaces ersetzen, solange sie nur einzeln
> auftreten, d.h. nicht mehr als eins nacheinander, nimm
> 
> 	$str =~ s/ (?! )/x/g;

Ich hab's ausprobiert:

use strict;
my $str;

# Ersetzt jedes Blank, das nicht
# von einem anderen gefolgt wird.
# Das trifft aber auch auf das
# letzte Blank von mehreren zu.
$str = 'a  c';
$str =~ s/ (?! )/x/g;
print "$str\n"; # ----> 'a xc'

# Ersetzt nur Blanks, wo vorher und
# nachher kein Blank steht.
$str = 'a  c';
$str =~ s/([^ ]) (?! )/$1x/g;
print "$str\n"; 

# Variante 2
$str = 'a  c';
$str =~ s/([^ ]) ([^ ])/$1x$2/g;
print "$str\n"; 

# Variante 3
$str = 'a  c';
$str =~ s/(?:[^ ]) (?:[^ ])/x/g;
print "$str\n"; 

# Variante 4
$str = 'a  c';
$str =~ s/(?:[^ ]) (?! )/x/g;
print "$str\n";


Die Varianten entstehen dadurch, dass man sich
aussuchen kann, wo man den Schreibaufwand haben
will ...

s/([^ ]) (?! )/$1x/g;
s/(?:[^ ]) (?! )/x/g;

Oder, gemaess der length-Idee:
$str = 'a  c';
$str =~ s/ +/$& eq ' '?'x':$&/eg;
print "$str\n"; 


Schoene Gruesse
Roland


###
You are subscribed to vienna-pm-list as <roland.bauer at fff.at>
http://www.fff.at/fff/vienna.pm/



More information about the Vienna-pm mailing list