Andro: Regex Problem

Hallo,

wie kann ich ganze Wörter in einer Regex auschließen?

Mit einem einzigen Zeichen ist das kein Problem:
<td[^>]

Aber wie geht es mit Zeichen?
<td(^</td>) ???????

Gruß

  1. Hallo,

    da begibst Du Dich schon in etwas unwegsamere Gebiete der Regulären Ausdrücke.
    So etwas wie (^dieses Wort nicht) gibt es leider nicht.
    Vielleicht helfen Dir die "back assertions" und "forward assertions" aber weiter. Mit Hilfe dieser Bedingungen kannst Du festlegen, daß ein Wort bzw. eine Zeichenfolge nur dann gefunden wird, wenn vor bzw. nach ihr eine bestimmte andere Zeichenfolge steht oder aber nicht steht.

    Schau einfach einmal unter http://de2.php.net/manual/de/reference.pcre.pattern.syntax.php nach unter "Assertions".

    Ansonsten bleibt Dir nichts anderes übrig, als zu versuchen, Deinen regulären Ausdruck positiv zu formulieren, also zu sagen, was gefunden werden soll, und nicht, was nicht gefunden werden soll.

    Ciao,
    Andreas

  2. Noch etwas:
    Du gibst als Beispiel <td(^</td>) an, d.h. Du hast wahrscheinlich eine HTML-Datei und möchtest die Inhalte von TD-Elementen herausfiltern.
    Das klappt unter Umständen schon ganz einfach mit so etwas:

    /<td[^>]*>(.*)</td>/

    Wobei es grundsätzlich gut ist, den Punkt möglichst sparsam einzusetzen und stattdessen die erlaubte Zeichenmenge genauer zu beschreiben.

    Ciao,
    Andreas