Thread regex: Strings nach Spam filtern: Spamfilter selbstgemacht (13 answers)
Opened by Froschpopo at 2003-09-12 16:30

Dubu
 2003-09-13 11:59
#51461 #51461
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=eisbeer,12.09.2003, 16:14]
Code: (dl )
$string =~s/[\w\d \.\-]{3,}//ig;
[/quote]
Das macht nun überhaupt nicht das richtige, denn es löscht jedes Wort mit mehr als zwei Zeichen aus der angegebenen Menge - höchstwahrscheinlich also den ganzen Text!

Ging es nicht eigentlich auch um mehr als drei Zeichen? Drei gleiche Buchstaben hintereinander kommen in der deutschen Sprache (gerade nach der RSReform) recht häufig vor. Auch sollten die Zeichen IMHO nicht einfach gelöscht werden, sondern durch ein einzelnes ersetzt. Sonst wird aus einem "Stillleben" schnell mal ein "Stileben" oder gar "Stieben".
Und warum die Beschränkung auf die angegebenen Zeichen? Sollte jemand zwar kein hundert "x", aber hundert "!" hintereinander schreiben dürfen?

Mir gefällt Ishkas Ansatz am besten, würde ihn aber noch verallgemeinern:
Code: (dl )
s/(.+)\1{3,}/$1/s

Das ersetzt eine beliebige Folge von Zeichen, die mehr als dreimal wiederholt wird, durch eine einzelne dieser Folgen. Das heißt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
"Hallo                                           Leser!"
# wird zu
"Hallo Leser!"

blablablablablablabla
# wird zu
bla

Stillleben
# bleibt
Stillleben

View full thread regex: Strings nach Spam filtern: Spamfilter selbstgemacht