Idee für Regexpression

  • Hi,

    Für eine Auswertung brauch ich eine schnelle Art um folgende Strings zu verarbeiten:

    a, b, c, d, not a, not b.
    e, f, g, h, not i, not j.


    Ich will jene Zeilen selektieren welche einen Buchstaben sowohl mit als auch ohne "not" beinhalten. In der ersten Zeile wäre das a, b.
    Die zweite Zeile sollte ignoriert werden da hier keine Buchstaben mit und ohne "not" vorkommen.
    Ich bin mir nicht sicher ob sowas überhaupt mit Regexpressions geht? Kann dass wer bestätigen?

    Danke,

    Andreas

    --
    Glücklicher Absolvent von 933 :wave2:

  • Es ist mit Regexps nicht möglich, sowas wie "einer von diesen Buchstaben, und später genau der selbe nochmal" auszudrücken.

    Das beste, was man tun könnte, wären getrennte Regexps für jeden Buchstaben (d.h. "a kommt negiert und nicht negiert vor", "b kommt negiert und nicht negiert vor", ...), die dann mit | verbunden werden. Das ist aber natürlich nicht befriedigend; ich würde sagen, du brauchst ein mächtigeres Tool.

    *plantsch*

  • Zitat von andras98

    Hi,
    Ich bin mir nicht sicher ob sowas überhaupt mit Regexpressions geht? Kann dass wer bestätigen?


    Es geht mit einer Teil-Regexp fuer jeden Buchstaben (und die dann ver-ODER-n). Manche Engines bieten auch sog. "back references" als Erweiterung, z.B.:

    egrep "([a-z]).*not \1"

  • Zitat von Spockman

    Manche Engines bieten auch sog. "back references" als Erweiterung, z.B.:

    egrep "([a-z]).*not \1"

    'Manche' ist gut: Die Perl/Unix und Emacs Regexp kommen anscheinend alle damit zurecht. :)

  • Zitat von a9bejo

    Emacs Regexp

    In .emacs hab ich:

    Code
    (defun dups ()
      (interactive)
      (re-search-forward "\\(\\(?:\\b\\w+\\b\\W*\\)+\\)\\W+\\1\\b"))

    Damit finde ich duplizierte Wortgruppen duplizierte Wortgruppen.

    Keine back references haben flex, lex u.v.a.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!