reguläre expressions
cheops
- php
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
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
hier gibt es ne sehr gute dokumentation dazu:
http://www.devmag.net/webprog/regulaere_ausdruecke.htm
ciao