Michael Schröpl: (ZU DIESEM FORUM) Nochmal als eigener Thread: Archivsuche erweitern um SelfHTML und Forum-Auslese

Beitrag lesen

case-insensitive Suche ist *wesentlich* schlimmer!
Dieser Hinweis ist mir schon einmal aufgefallen. Ich wollte deshalb schon
lange fragen, wieso eigentlich?

Wenn Du "HTML" case-insensitiv suchst, dann könnte die regular expression engine von Perl das ziemlich stupide machen (ich weiß *nicht*, wie sie es genau macht):
Suche zunächst einmal die Position eines "H", und vergleiche, ob das nächste Zeichen ein "T" ist, das übernächste ein "M", ... beim ersten Unterschied wird abgebrochen und das nächste "H" gesucht usw.
Falls bekannt ist, daß der String kein Zeichen doppelt enthält, kann die Suche sogar an der aktuellen Stelle fortgesetzt werden - würdest Du dagegen "HAHa" in "HAHAHa suchen, müßtest Du nach dem Unterschied an Position 4 das nächste H als Startzeichen wieder ab Position 2 zu suchen beginnen, um den Treffer an Position 3-6 zu finden.

Suchst Du aber case-insensitiv, dann fallen die Operationen an allen Positionen doppelt aus. Du suchst also ein H" *oder* ein "h", was intern eben zwei Vergleiche sind; dasselbe für jedes weitere Zeichen.
Und der oben beschriebene lookahead muß jetzt "H" und "h" als gleiche Zeichen behandeln, was die Chance erhöht, daß er nicht angewendet werden darf und dadurch Zeichen im zu durchsuchenden Text mehrfach verglichen werden müssen ...