tester: Regex: [^mehr_als_ein_chr]

moin!

wie kann man in nem regex-platzhalter ne bedingung festlegen, die festlegt, dass bis zu der stelle, an der eine bestimmte zeichenfolge vorkommt, gelesen wird.
normalerweise macht man ja sowas: [^<]
aber beispielsweise [^class] geht nicht !

bitte helft !

danke

  1. Hi,

    aber beispielsweise [^class] geht nicht !

    doch, das matcht auf alles, was weder "c" noch "l" noch "a" noch "s" ist. Übrigens reicht in einer Zeichenklasse die einfache Nennung eines jeden Zeichens, mehrfach ist nicht nötig.

    Vermutlich möchtest Du in der Dokumentation der Pattern Syntax nach Negative Assertion suchen.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. so, habs mir mal durchgelesen.
      ABER leider funktioniert es nicht, so, wei es sollte !!!

      is ein etwas längerer  string, bis zu dem der platzhalter reichen sollte...
      <td colspan="7" height="15" nowrap="nowrap"><spacer type="block" height="1" width="1">

      hab das schon alles vergeblich versucht:

      (?<=(<td colspan="7" height="15" nowrap="nowrap"><spacer type="block" height="1" width="1">))

      (?<=<td colspan="7" height="15" nowrap="nowrap"><spacer type="block" height="1" width="1">)

      (?<=(<td colspan="7" height="15" nowrap="nowrap"><spacer type="block" height="1" width="1">)*?)

      (?>=(<td colspan="7" height="15" nowrap="nowrap"><spacer type="block" height="1" width="1">))

      (?>=<td colspan="7" height="15" nowrap="nowrap"><spacer type="block" height="1" width="1">)

      (?>=(<td colspan="7" height="15" nowrap="nowrap"><spacer type="block" height="1" width="1">)*?)

      1. Hi,

        hab das schon alles vergeblich versucht:
        (?<=

        an dieser Stelle ist bereits der Fehler. Such noch mal.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. moin!

    n'abend.

    aber beispielsweise "[^class]" geht nicht !

    du musst beachten, dass es sich bei [...] um EIN Zeichen handelt. Es ist sozusagen ein Zeichen, was bei deinem Beispiel entweder kein c oder ein l oder ein a oder ein s ist.
    Du solltest nach "^(class)" suchen.

    danke

    bitte

    1. Hi,

      Du solltest nach "^(class)" suchen.

      und was bringt es ihm, wenn er "class" am Stringanfang findet?

      Cheatah

      --
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
  3. Hallo,

    wie kann man in nem regex-platzhalter ne bedingung festlegen, die festlegt, dass bis zu der stelle, an der eine bestimmte zeichenfolge vorkommt, gelesen wird.

    Wenn ich Dich richtig verstehe, willst Du z. B. aus der Zeichenfolge

    alablacladlaclassblaclassbla

    alablacladla

    matchen? Probiere doch mal

    (.*?)class.*

    Das Fragezeichen muesste den ersten .* weniger "gefraessig" (greedy) machen als den zweiten, sodass der Ausdruck in Klammern vor dem ersten Auftreten von class aufhoert und das von Dir gewuenschte Ergebnis erhalten muesste.

    Habe das jetzt aber nicht pruefen koennen...

    Erklaerungen findest Du unter "Repetition" auf
    http://www.php.net/manual/de/pcre.pattern.syntax.php

    Grüße, Alex.