Suchsyntax in Regulären Ausdruck umwandeln?
JensB
- html
Hallo,
ich bau mir gerade eine Suchfunktion für meine Webseite (in Javascript), und habe mir dafür ein Array von Seiten-Objekten erstellt (ein Seitenobjekt besteht aus dem Titel der Seite, der URL und einer Beschreibung).
Jetzt gibt der Suchende einen Begriff ein, der dann als regulärer Ausdruck interpretiert wird; eine for-Schleife geht das gesamte Seiten-Objekt-Array durch, und schaut immer, ob ausdruck.test(Seite[i].Titel) || ausdruck.test(Seite[i].URL) || (ausdruck.test(Seite[i].Beschreibung) == true
Ich dachte mir, das ist bestimmt ganz nett, da diese regulären Ausdrücke ein recht machtvolles Werkzeug sind.
ABER: Aus Suchanfragen kennt man ja, wenn man nach Hau* sucht, werden Wörter wie "Hausmeister", "haus", etc. gefunden. Bei den regulären Ausdrücken bedeutet das * aber etwas anderes, da würde auch "haudrauf" gefunden... Und das könnte den Besucher ja verwirren.
Lange Rede, kurzer Sinn: Gibt es eine überschaubare Lösung, wie ich die aus dem WWW bekannte Suchmaschinen-Syntax in einen regulären Ausdruck umwandeln kann?
Viele Grüße,
Jens
ABER: Aus Suchanfragen kennt man ja, wenn man nach Hau* sucht, werden Wörter wie "Hausmeister", "haus", etc. gefunden. Bei den regulären Ausdrücken bedeutet das * aber etwas anderes, da würde auch "haudrauf" gefunden... Und das könnte den Besucher ja verwirren.
//EDIT:
War ein falsches Beispiel, ich muss mich korrigieren. "haudrauf" würde natürlich auch gefunden. Aber der reguläre Ausdruck /hau*/ würde zum Beispiel auch auf "Hase" zutreffen. Und das ist das Problem.
Hi,
"haudrauf" würde natürlich auch gefunden. Aber der reguläre Ausdruck /hau*/ würde zum Beispiel auch auf "Hase" zutreffen. Und das ist das Problem.
Na dann lass nach hau suchen, gefolgt von beliebig vielen beliebigen (Wort-)Zeichen.
MfG ChrisB
Na dann lass nach hau suchen, gefolgt von beliebig vielen beliebigen (Wort-)Zeichen.
MfG ChrisB
Danke für deine Antwort, aber ich glaube, du hast mein Problem nicht verstanden: Ich selber weiß ja, dass ich einen regulären Ausdruck da eingeben kann, aber ich will die Suche ja benutzerfreundlich gestalten, daher möchte ich die Suchsyntax in einen regulären Ausdruck übersetzen.
@@JensB:
nuqneH
daher möchte ich die Suchsyntax in einen regulären Ausdruck übersetzen.
Also '*' durch '.+' ersetzen?
Qapla'
Hallo,
daher möchte ich die Suchsyntax in einen regulären Ausdruck übersetzen.
Also '*' durch '.+' ersetzen?
oder durch '.*', je nachdem wie man es für richtig hält. In einigen Implementierungen findet man mit "hau*" auch den Eintrag "hau".
So long,
Martin
Also '*' durch '.+' ersetzen?
oder durch '.*', je nachdem wie man es für richtig hält. In einigen Implementierungen findet man mit "hau*" auch den Eintrag "hau".
Ich danke für die Ideen :-)
Aber ein ? ist ja in Suchsyntax ein Platzhalter für ein spezielles Zeichen, wie mache ich das noch mit dem reg. Ausdruck?
@@JensB:
nuqneH
Aber ein ? ist ja in Suchsyntax ein Platzhalter für ein spezielles Zeichen, wie mache ich das noch mit dem reg. Ausdruck?
Willst du jetzt jede Kleinigkeit hier fragen oder doch erstmal nachlesen?
http://de.selfhtml.org/javascript/objekte/regexp.htm, http://de.selfhtml.org/perl/sprache/regexpr.htm
Qapla'