9 Stimmen

Speichern von regulären Ausdrücken in einer MySQL-Datenbanktabelle und Abgleichen mit ihnen

Ich habe eine sehr interessante Aufgabe, die ich nicht weiß, wie ich umsetzen soll.

Ich muss viele reguläre Ausdrücke in einer Datenbanktabelle speichern und herausfinden können, welcher von ihnen mit dem angegebenen String übereinstimmt.

Zum Beispiel:

id | regexp
---|-------------
1  | ^hallo welt$
2  | ^Ich habe [0-9] Blumen&
3  | ^ein anderer regulärer Ausdruck$
4  | ^und ein anderer (einer|regulärer Ausdruck)$

Und ich muss herausfinden, welcher dieser Ausdrücke mit dem String "Ich habe 5 Blumen" übereinstimmt. Natürlich kann ich SELECT * FROM Tabelle und in PHP durch die Ausdrücke iterieren, um sie nacheinander abzugleichen, aber das wäre furchtbar für den Server zu handhaben.

Kann ich diese Tabelle irgendwie indizieren oder eine spezielle SQL-Abfrage verwenden, um diese Aufgabe zu erledigen?

Ich würde mich über jede Antwort freuen. Vielen Dank.

15voto

user187291 Punkte 52315
select * from table where $your_string RLIKE regexp 

mysql reguläre Ausdrücke

3voto

Romuald Brunet Punkte 5041
SELECT * FROM table WHERE 'some stuff' REGEXP `regexp`;

Leider gibt es keine Möglichkeit, Indizes bei Abfragen zu verwenden, die reguläre Ausdrücke verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X