Moin!
ich werde es so lösen, wie kann man es aber trotzdem mit einer REGEX lösen?
Die Aufgabenstellung "mehr als zwei Suchbegriffe können in beliebiger Reihenfolge in einem String vorkommen, müssen aber alle vorkommen" sollte man nicht per RegEx lösen. Denn du mußt für jede Anzahl an Suchbegriffen einen eigenen Regex bereithalten, in dem alle Permutationen (d.h. Reihenfolgemöglichkeiten) aller Begriffe aufgeführt sind:
Für zwei Begriffe ist das noch leicht, denn es gibt als Reihenfolge nur:
AB oder BA
Bei drei Begriffen ist das schon schwieriger:
ABC oder ACB oder CAB oder BAC oder BCA oder CBA
Bei vier Begriffen gibt es schon 12 verschiedene Anordnungsmöglichkeiten.
Bei den von dir in Aussicht gestellten zehn Begriffen gibt es 10! (zehn Fakultät) verschiedene Anordnungsmöglichkeiten. Das sind 3628800 Stück.
Da ist es doch sehr viel einfacher, einfach eine AND-Verknüpfung mit jedem der zu findenden Begriffe zu machen. Da hat man maximal soviele AND-Komponenten, wie Begriffe.
Ein Regex würde dir tatsächlich nur helfen, wenn es wirklich um Mustererkennung ginge, du also "hier zehn Buchstaben, dann drei Ziffern, dann beliebige Zeichen, dann 'true' oder 'false'..." suchst. Wann immer du feststehende (auch dynamisch vom Benutzer eingebbare) Strings suchst, sind reguläre Ausdrücke unbedingt zu vermeiden.
- Sven Rautenberg