Vincent: RegExp: nicht "escape'te" unterstriche.

hey,

ich möchte das wenn in einem text ein zeichenkette von unterstrichen umschlossen ist, das sie mit etwas anderem ersetzt wird. falls die unterstriche "escape't" sind jedoch nicht.

Beispiel:

  1. Dies ist ein _super_ toller Beispielsatz. ("super" wird ersetzt)
  2. Dies ist ein _super toller_ Beispielsatz. ("super toller" wird ersetzt)
  3. Dies ist ein \super toller\ Beispielsatz. (backslashes werden entfernt: optional)

preg_replace('/\_([^_]+)\_/', '$1', $token)

funktioniert wunderbar. Allerdings wird Beispiel 3 auch ersetzt. Ich habe ein wenig mit [^\\] rum gespielt, aber nicht zu meinem gewünschten Ergebnis gekommen. Toll wäre es wenn die backslashes entfernt werden würden und einfach: "Dies ist ein _super toller_ Beispielsatz." dort stehen würde.

Mag mir jemand die Lösung für mein Problem zeigen und erklären?

lg aus Köln, Vincent

  1. Hi,

    ich möchte das wenn in einem text ein zeichenkette von unterstrichen umschlossen ist, das sie mit etwas anderem ersetzt wird. falls die unterstriche "escape't" sind jedoch nicht.

    Mag mir jemand die Lösung für mein Problem zeigen und erklären?

    Du moechtest dich mit "Assertions" beschaeftigen. (Genauer: negative look-ahead- und look-behind-assertions.)

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Du moechtest dich mit "Assertions" beschaeftigen. (Genauer: negative look-ahead- und look-behind-assertions.)

      Danke Chris, hat mir sehr geholfen!