Paul Brunner: reguläre Ausdrücke lower-case

Hallo,

Folgender regulärer Ausdruck soll ein Wort am Satzanfang identifizieren, daß 5 Buchstaben lang oder kürzer ist.

preg_replace("/(.|:|!|?) ([A-ZÖÄÜ]{1}[a-zöäüß]{1,4})\b/", " $2", $string)

Ich möchte dieses Wort durch sein kleingeschriebenes Pondente ersetzen. Also aus ". Hier" wird " hier". Geht das?

Gruß
Paul

  1. Hi Paul,

    Ich möchte dieses Wort durch sein kleingeschriebenes Pondente

    Mit dem /e Modifier hast Du die Möglichkeit Funktionen als Ersetzung aufzurufen. Das Weitere ist dann kein Problem mehr.

    preg_replace("/(.|:|!|?) ([A-ZÖÄÜ]{1}[a-zöäüß]{1,4})\b/e", ucfirst('\2'), $string)

    Grüße Oesi

    1. ucfirst war Blösdinn
      strtolower ist das Richtige
      Grüße Oesi

    2. Hallo Oesi,

      Mit dem /e Modifier hast Du die Möglichkeit Funktionen als Ersetzung aufzurufen. Das Weitere ist dann kein Problem mehr.

      Danke, das mir dem e-Modifier war neu für mich.

      preg_replace("/(.|:|!|?) ([A-ZÖÄÜ]{1}[a-zöäüß]{1,4})\b/e", strtolower('\2'), $string)

      Irgendwie scheint das mit dem einbinden des Musterschnipsels nicht richtig zu gehen. Was bedeutet '\2' ?

      Gruß
      Paul

      P.S.: Hoffentlich findet hier unten nochmal jemand mein Frage ;-)

  2. Im Vorteil ist, wer Dokumentationen lesen kann (oder weiss wo er suchen muss) ;-)

    So gehts:

    preg_replace("/(§|.|:|!|?)[\n\r\ ]*([A-ZÖÄÜ]{1}[a-zöäüß]{1,5})\b/e", " strtolower(${2});", $string);

    für php ist die Notation für die backreference nicht \2 sondern ${2}

    Danke für den richtigen Anstoß
    Paul