# REGEXP multi lookahead



## abdellaui (20. März 2017)

Hallo zusammen, 
ich habe folgendes Problem:
Ich möchte einen Regulären Ausdruck entwickeln, welches Sätze mit den enthalten Wörter (unabhängig von der Reihenfolge) selektiert.

Hilfestellung von @sheel und @Yaslaw führten zu diesem Ansatz:


```
(?=.*(wort|wort2))(?=.*wort3)(?=.*wort4).*
```

Dieser Ausdruck erfüllt meine Vorraussetzung bedingt, unzwar falls die Wörter unabhängig voneinander sind bzw. nicht aus zusammengesetzen Wörtern bestehen.

Ein Beispiel was zur "Fehler" führt:


```
(?=.*(buchhalter|auto))(?=.*buch)(?=.*automatik).*
```

Ein Satz, welches nur die Wörter *buchhalter *und *automatik *vorzeigt wird vom Ausdrück selektiert, jedoch sollten Sätze, die die Wörter buchhalter oder auto, buch und automatik beinhalten, selektiert werden.

Meine Frage wäre nun, gibt es da eine Lösung lookahead Ausdrücke vorzuschreiben nicht in einem anderen Ausdruck enthalten zu sein?


----------



## Yaslaw (21. März 2017)

In welcher Programmiersprache war das?
War das nicht mit MySQL oder Oracle oder so?
Du solltest wirklich nicht alles mit einem regex lösen....


----------



## abdellaui (21. März 2017)

Das war zwar für MySQL gedacht, nun ist das eher für Lernzwecke bzgl. RegEx.


----------



## Yaslaw (21. März 2017)

```
(?=.*(?:buchhalter|auto))(?=.*buch(?!halter))(?=.*automatik).*
```
http://php.net/manual/de/regexp.reference.assertions.php


----------



## abdellaui (21. März 2017)

Gibt es da keine "allgemeingültige" Lösung? Quasi ein Prefix, welches vorsagt, das die lookahead Ausdrücke nicht in anderen Ausdrücken vorkommen dürfen?


----------



## Yaslaw (21. März 2017)

Mir nicht bekannt.


----------

