Re: [SAde] RE-Nachhilfe, HTML-Tags (Lösung)

Wolfram Schroeder <[email protected]> Wed, 15 Oct 2003 23:21:13 +0200
Newsgroups gmane.mail.spam.spamassassin.devel.de
Message-ID <[email protected]>
Ingo Wiarda schrieb:

> <Korinthen title="Ebenfalls von der Regex betroffen:">
> 
> 1. <!-- Table of Contents -->
> Nicht jeder Comment muß böse sein.
> 
> 2. <blink><marquee>
> Aber wer schickt schon seriöse Mail mit solchen Tags...
> 
> 3. <?xml version=3D"1.0" encoding=3D"UTF-8"?>
> Wird bei Test auf HTML wahrscheinlich ignoriert, oder?
> 
> 4. Email-Adressen der Form "Joe Meier" <[email protected]>
> (kommt theoretisch irgendwann mal vor)
> 
> 5. <> bzw. <\s*> wird auch gematcht. Ist das Absicht?
> 
> </Korinthen>

Yo,

rawbody         WS_WEIRD_HTML 
/<(?:\/|(?!\/))(?!(?:!--\s+|\?XML|A|ABBR|ACRONYM|ADDRESS|APPLET|AREA|B|BASE|BASEFONT|BDO|BIG|BLOCKQUOTE|BODY|BR|BUTTON|CAPTION|CENTER|CITE|CODE|COL||COLGROUP|DD|DEL|DFN|DIR|DIV|DL|DT|EM|FIELDSET|FONT|FORM|FRAME|FRAMESET|H1|H2|H3|H4|H5|H6|HEAD|HR|HTML|I|IFRAME|IMG|INPUT|INS|ISINDEX|KBD|LABEL|LEGEND|LI|LINK|MAP|MENU|META|NOFRAMES|NOSCRIPT|OBJECT|OL|OPTGROUP|OPTION|P|PARAM|PRE|Q|S|SAMP|SCRIPT|SELECT|SMALL|SPAN|STRIKE|STRONG|STYLE|SUB|SUP|TABLE|TBODY|TD|TEXTAREA|TFOOT|TH|THEAD|TITLE|TR|TT|U|UL|VAR)\b)[^>]*>/i
describe        WS_WEIRD_HTML      Nonexisting HTML-Tag
score           WS_WEIRD_HTML      0.1

Wenn Du Zeit findest, lass doch Dein Script bitte mal mit der RE laufen?

1. zurechtgehackt, ist aber nicht wirklich korrekt - das \b hat mich 
erwischt, weil !-- !~ /!\b.*/ (\b ist zwischen Buchstaben und irgendwas);
2. korrigiert - es fehlen wahrscheinlich noch weitere Tags, meine Liste 
ist vom W3C, Punkte für <marquee> und <blink> sollen aber andere Regeln 
setzen;
3. ich habe ?xml einfach mal dazu gepackt, da Du es ja anscheinend 
gefunden hast;
4. Kommen tatsächlich in Mails solche Mailadressen vor? Die RE würde 
eventuell ziemlich lahm werden, wenn ich das berücksichtigen müsste, 
vielleicht durch eine zusätzliche Alternative \w+\@[a-z0-9-.]{5,} - oder 
hast Du diese Form nur in From: und To: gefunden?
5. kann ich nicht nachvollziehen? <> und <  > matchen beide, die 
Tagnamen sind ja nicht optional?

Hier mein Testscript (die zu testenden String einfach eintippen):

#!/usr/bin/perl
while (<STDIN>) {
    if 
(/(<(?:\/|(?!\/))(?!(?:!--\s+|\?XML|A|ABBR|ACRONYM|ADDRESS|APPLET|AREA|B|BASE|BASEFONT|BDO|BIG|BLOCKQUOTE|BODY|BR|BUTTON|CAPTION|CENTER|CITE|CODE|COL||COLGROUP|DD|DEL|DFN|DIR|DIV|DL|DT|EM|FIELDSET|FONT|FORM|FRAME|FRAMESET|H1|H2|H3|H4|H5|H6|HEAD|HR|HTML|I|IFRAME|IMG|INPUT|INS|ISINDEX|KBD|LABEL|LEGEND|LI|LINK|MAP|MENU|META|NOFRAMES|NOSCRIPT|OBJECT|OL|OPTGROUP|OPTION|P|PARAM|PRE|Q|S|SAMP|SCRIPT|SELECT|SMALL|SPAN|STRIKE|STRONG|STYLE|SUB|SUP|TABLE|TBODY|TD|TEXTAREA|TFOOT|TH|THEAD|TITLE|TR|TT|U|UL|VAR)\b)[^>]*>)/i) 
{
       print $+;
       print " matched\n";
    }
}


> Mal sehen, wie sich die Regel (in der angekündigten optimierten Form) bewährt.
> 
> Ingo
>

Wenn Du schon ein script hast, kannst Du bestimmt ein "time " vor Deinen 
Aufruf setzen und mir Vergleichswerte für die Geschwindigkeit bei der RE 
oben und meinem Standardbeispiel /(?:top.{0,10}|sonder)aktion/i nennen? 
Später könnten wir vielleicht auch ein definitives Urteil über 
Optimierungen fällen, wäre nett!

Bis dann,
Wolfram




-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php