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