Hallo,
regexp="es ist (.*?)."
/es ist ([^!?.]*)(.|$)/mg
. machted auf den Punkt (. matched auf jedes Zeichen)
$ matched auf das Ende des Strings (wg. des m-Modifiers, ohne m wird auch das Zeilenende gematched - ganz nach belieben)
Durch das [^!?.] statt dem . wird im Hauptpattern dafür gesorgt, dass keine Satzzeichen beinhaltet werden.
Wenn Du's noch strenger willst:
/es ist (((?!es ist )[^!?.])*)(.|$)/mg
Durch die Lookahead-Assertion im Pattern selbst wird dafür gesorgt, dass der Hauptpattern selbst wieder nicht "es ist " enthalten darf.
Und wenn Du's ganz genau haben willst, kannst Du noch Wort-Boundaries prüfen:
/\bes ist (((?!\bes ist )[^!?.])*)(.|$)/mg
Wird natürlich immer komplexer und damit zeitaufwändiger.
Viele Grüße,
Christian