9 Stimmen

Speichern von regulären Ausdrücken in einer MySQL-Datenbanktabelle und Abgleichen gegen diese

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 in der Lage sein herauszufinden, welcher von ihnen mit dem gegebenen String übereinstimmt.

Zum Beispiel:

id | regexp
---|-------------
1  | ^hello world$
2  | ^I have [0-9] flowers&
3  | ^some other regexp$ 
4  | ^and another (one|regexp)$

Und ich muss herausfinden, welcher dieser Ausdrücke mit dem String "I have 5 flowers" übereinstimmt. Natürlich kann ich SELECT * FROM table und in PHP eine Schleife durchlaufen lassen, die Ausdrücke einzeln abgleichen, aber das wäre für den Server schrecklich zu handhaben.

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

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 Tabelle WHERE 'some stuff' REGEXP `regexp`;

Leider gibt es keine Möglichkeit, Indizes mit Abfragen zu verwenden, die Regexps 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