cheops: reguläre expressions

hi zusammen :-)

ich hab das problem, dass ich eine boolesche suche benötige, die durchaus folgendes ausdrücken kann:
"A & B & C | D"

anstatt jetzt komplizierte algos zu coden, die das interpretieren können, würde ich das gerne mit reg expressions lösen...
ich habe auch schon ein wenig rumgebastelt, aber irgendwie steig
ich noch nicht ganz durch...

"/(suchbegriff_A)|((suchbegriff_B)(suchbegriff_C))/i"
...funktioniert nicht, sollte eigentlich "A | B & C" darstellen :-(

wie verbindet man die einzelnen begriffe korrekt miteinander?
wäre schön, wenn mir jemand einen kurzen schubs in die richtige richtung geben könnte... danke.

gruß
cheops

  1. Halihallo cheops

    ich hab das problem, dass ich eine boolesche suche benötige, die durchaus folgendes ausdrücken kann:
    "A & B & C | D"

    Dynamisch durch den Benutzer eingegeben, nehme ich an?

    anstatt jetzt komplizierte algos zu coden, die das interpretieren können, würde ich das gerne mit reg expressions lösen...

    Es ist sehr zweifelhaft, dass dir hier regular expressions die Arbeit komplett abnehmen.
    Zum einen wirst du immer ein Muster durch eine programmiertechnische Logik dynamisch
    erstellen lassen müssen und zum anderen haben regular expressions einen anderen
    Aufgabenbereich:
    Sie dienen zum Erkennen und der Datenextrahierung von/aus Mustern, nicht zur bool'schen
    Arithmetik (sie mögen einen Bestandteil davon sein). Eine Umsetzung wäre denkbar,
    obgleich ich den (performanten, schönen) Erfolg nicht erwarten würde.

    ich habe auch schon ein wenig rumgebastelt, aber irgendwie steig
    ich noch nicht ganz durch...
    "/(suchbegriff_A)|((suchbegriff_B)(suchbegriff_C))/i"
    ...funktioniert nicht, sollte eigentlich "A | B & C" darstellen :-(

    Nun, du setzt voraus, dass suchbegriff_B vor suchbegriff_C steht, das steht IMHO nicht
    im Sinne deiner Suche, die von Reihenfolge nicht beeinflusst werden soll (oder willst
    du dies explizit?). Du müsstest über alle möglichen Variationen mit OR testen, was im
    höchsten masse aperformant und unlogisch ist.
    Regular expressions durchsuchen den Datenbestand nicht rekursiv, somit ist eine Lösung
    über ausschliesslich regular expressions zwar möglich, aber aperformant.

    wie verbindet man die einzelnen begriffe korrekt miteinander?

    Indem man das Suchen geeigneten regular expressions überlässt, die bool'sche Arithmetik
    jedoch der programmiertechnischen Logik.

    Durchsuche die Dokumente nach den Keywords und stelle über die bool'sche Aussage fest,
    ob das Dokument Bestandteil der Ausgabe ist.

    Viele Grüsse

    Philipp

  2. hier gibt es ne sehr gute dokumentation dazu:
    http://www.devmag.net/webprog/regulaere_ausdruecke.htm

    ciao