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

Ishka
 2003-09-13 14:22
#51462 #51462
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
[quote=Dubu,13.09.2003, 09:59][quote=eisbeer,12.09.2003, 16:14]
Code: (dl )
1
2
3
[...]
Mir gefällt Ishkas Ansatz am besten, würde ihn aber noch verallgemeinern:
[code]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
[/quote]
Verallgemeinern, ok - aber ich würd mehr als drei Zeichen durch dreinmal dasselbe ersetzen, denn wenn sich jemand vertippt, dann wird aus og. Stilllleben ein Stileben. Und jetzt hab ich noch ein Fragezeichen ins Matching eingebaut, damit nicht !!!!!!...!! drei !!! als Muster erkannt werden und dann neun stehenbleiben oder so.
Code: (dl )
s#(.+?)\1{3,}#$1$1$1#gs;
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}

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