depp: RegExp

moin
habe nen regexp, der von einem ausdruck bis zum ende des satzes einen string ermittelt. jedoch soll dies nur bei aussagesätzen, die also mit einem PUNKT abgeschlossen werden, zutreffen.
folgendes beispiel:

txt="es ist doof. es ist dumm. es ist bekloppt, oder? ansonsten sag ich noch: es ist alles ok"
regexp="es ist (.*?)."
herauskommen soll:
-doof
-dumm
-alles ok

und nicht:
-doof
-dumm
!-bekloppt, oder? ansonsten sag ich noch: es ist alles ok

danke für tipps

  1. Hallo,

    regexp="es ist (.*?)."

    Das sieht doch schon gut aus. Nur musst Du den Punkt auch maskieren:
    /es ist (.*)./

    Gruesse,
    Joerg

    1. Sorry,

      /es ist (.*)./

      /es ist (.*?)./

      meinte ich natürlich.

  2. 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