Mailinglisten-Archive |
On Wednesday 11 July 2001 23:06, Ithamar Garbe wrote:
> Hallo zusammen,
>
> wieder einmal bereitet mir ein Skript Kopfzerbrechen:
>
[...]
> Das funktioniert auch sehr gut, allerdings möchte ich noch einen
> Schritt weitergehen, und überprüfen, ob jemand 3 oder mehr gleiche
> Zeichen hintereinander eingibt, z.B. "aaaa". Solche Zeichen können
> auch inmitten von anderen Zeichen vorkommen, z.B. "aaafgsdf", dies
> möchte ich alles rausfiltern.
mmh, mit dem sed sieht das so aus:
[gerd_(at)_devel:~]$ echo coooooololo | sed -e 's/\(.\)\1\{2,\}/\1\1/'
coololo
der ausdruck findet alle zeichen, die 2x oder oefter (kann man ja
anpassen) nacheinander kommen und ersetzt sie durch 2 derselben. man
kann sie auch durch gar nix ersetzen lassen, wie man will.
zur erklaerung:
die klammer \(.\) definiert eine gruppe beliebiger zeichen, durch den
identifier \1 wird sich auf diese (erste klammer) bezogen, \{2,\}
wiederum sagt aus, dass sich das vorige konstrukt nur auf zeichen
auswirken soll, die 2x oder oefters vorkommen. diese werden dann im
zweiten teil mittels \1\1 durch zwei der zeichen, die die klammer
bestimmt, ersetzt.
soweit zur theorie.
wie das aber in php mit einer {e,p}reg(i)(_replace)-funktion aussieht
wuesste ich auch gerne ;-)
vielleicht ist ja einer so fit in php-regex, dass er mein konstrukt
oben umwandeln kann.
mfg,
gerd
--
/"\
\ / ASCII Ribbon Campaign
x Say NO to HTML in email and news !!
/ \
php::bar PHP Wiki - Listenarchive