Schnell gefragt: RegExp mehrere Wörter finden

EaStErDoM

Mitglied
Wie kann ich in einem Text mit Regular Expressions mehrere Wörter finden, die darin enthalten sein müssen, aber auch durcheinander sein können. Ich kenn nur das ODER also (entweder|das|wort|oder|das) wie mach ich ein UND ?
 
Naja Wennich einen Text habe wie:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur tincidunt euismod leo. Nunc augue purus, luctus at, convallis quis, consectetuer a, purus. Aliquam vestibulum convallis dolor. Praesent non quam. Aenean a nulla. Nullam pulvinar tortor id nibh. Nulla a ante non metus ullamcorper vulputate. Morbi iaculis justo at purus. In fringilla bibendum lorem. Integer tincidunt diam nec dolor. Cras adipiscing. Ut adipiscing condimentum dui. Nulla odio. Sed risus dolor, sagittis sed, auctor quis, vehicula ac, nisl. Vestibulum at turpis eu nisl iaculis feugiat.

Und ich suche nach „fringilla vestibulum euismod“, soll er mir den zitierten Text als Treffer rausgeben, weil alle drei Worte drin vorkommen.
 
Wie bereits gesagt, ist das allein mit regulären Ausdrücken nicht möglich. Du müsstest jedes Wort einzeln suchen und die Gesamtheit der Treffer beurteilen, etwa:
PHP:
strpos($string, 'fingilla') !== false && strpos($string, 'vestibulum') !== false && strpos($string, 'euismod') !== false
Falls die Daten in einer Datenbank stehen, könnte dir auch eine Volltextsuche weiterhelfen.
 
Ich habe eben versucht die Volltextsuche zu umgehen, weil ich da die Tabelle umbauen muss und darauf hab ich keinen Zugriff. Da müssen ja die Spalten, die durchsuchbar sein sollen mit FULLTEXT() versehen werden.

Ich probier mal ob ich das doch irgendwie hinkrieg, dass ich das nachträglich machen kann.

EDIT:
Jetzt ist der Index dreimal so groß wie die Daten, liegt das nur daran, dass noch wenige Datensätze in der Tabelle sind oder bleibt das jetzt generell so?
 
Zuletzt bearbeitet:
Jetzt hab ich ein echt merkwürdiges Problem:

Wenn ich Abfrage:
Code:
SELECT * FROM agora WHERE typ=1 AND MATCH(text,bezeichner) AGAINST('funktioniert,suche')

sagt er:
Can't find FULLTEXT index matching the column list

wenn ich aber mach
Code:
SELECT * FROM agora WHERE typ=1 AND MATCH(bezeichner) AGAINST('funktioniert,suche')
oder
Code:
SELECT * FROM agora WHERE typ=1 AND MATCH(text) AGAINST('funktioniert,suche')

dann funktioniert es.

Also beide Spalten gehn nicht, einzeln aber schon. Habs jetzt schon mit allen Anführungszeichen versucht, zeigt auch keine Wirkung. Wasn da los?
 
Zurück