Nessaja: Anfängerfrage (regexp)

Hallo ihr :)
Ich beschäftige mich gerade mit regular expressions in php und möchte nun aus einem String die Hausnummer auslesen.

Der String kann z.B. lauten:

  • "Josefstraße 123"
  • "Hansstr.345"
  • "Josef Müller Schmid Str. 17a"
  • "Franz-Josef-Strauß-Str. 25 C"
  • "Birkenstraße12 (bei Frisör Müllermeierschulz)"

Jetzt habe ich es mit folgendem Ausdruck probiert:

$muh = preg_match_all ( "/[0-9]{1,5}\ {,1}[a-zA-z]{,1}/", "Beethovenstr. 25a (Frisör Meier)", $Treffer);

vorher natürlich brav $Treffer = array();

Um also den Ausdruck zu erklären - so wie ich mir den ausgedacht habe - : eine Zahl mit 0-5 Stellen, dann evtl. 1 Leerzeichen und dann evtl. 1 Buchstabe a-zA-Z

Wenn ich mir jetzt $Treffer anzeigen lasse, enthält es nur:

Array ( [0] => Array ( ) )

Ich möchte aber die Hausnummer ausgegeben bekommen, bzw. Sie in das Array $Treffer geschrieben bekommen (in diesem Fall "25a"), inklusive a/b/c etc. bei der Hausnummer, und egal ob vorher ein Punkt oder ein Leerzeichen oder direkt der Straßenname ist...

Kann mir da evtl. jemand weiterhelfen :) ?

Danke und Gruß

Nessaja.

  1. Hallo,

    $muh = preg_match_all ( "/[0-9]{1,5}\ {,1}[a-zA-z]{,1}/", "Beethovenstr. 25a (Frisör Meier)", $Treffer);

    Probier's mal mit "/[0-9]{1,5} {0,1}[a-zA-Z]{0,1}/"
    Tschüss.

    1. Hi numb!

      Probier's mal mit "/[0-9]{1,5} {0,1}[a-zA-Z]{0,1}/"

      Statt {0,1} kannst du auch "?" benutzen. Also:
      "/[0-9]{1,5}\ ?[a-zA-z]?/"

      MfG H☼psel

      --
      "It's amazing I won. I was running against peace, prosperity, and incumbency."
      George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
      Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    2. Hi,

      $muh = preg_match_all ( "/[0-9]{1,5}\ {,1}[a-zA-z]{,1}/", "Beethovenstr. 25a (Frisör Meier)", $Treffer);
      Probier's mal mit "/[0-9]{1,5} {0,1}[a-zA-Z]{0,1}/"

      Das "{0,1}" koennte man noch durch "?" (steht auch fuer 0 oder 1 mal) ersetzen. Ausserdem sollte man den hinteren Teil (" {0,1}[a-zA-Z]{0,1}") vielleicht noch in klammern setzen, da sonst auch ein Leerzeichen, auf das kein Buchstabe folgt gefunden wird.

      Mein Vorschlag waere folgender:
      /\d+( ?[a-zA-z])?/

      "\d" steht fuer Ziffer (genau wie "[0-9]") und das "+" heisst mindestens einmal (wie "{1,}").

      mfG,
      steckl

      1. Hallo,
        danke für alle eure Antworten :-)

        Habe jetzt die Version von steckl verwendet.

        Danke nochmal.

        Nessaja

  2. Hello out there!

    Ich beschäftige mich gerade mit regular expressions in php und möchte nun aus einem String die Hausnummer auslesen.

    Das geht wohl nicht.

    Der String kann z.B. lauten:

    • "Josefstraße 123"
    • "Hansstr.345"
    • "Josef Müller Schmid Str. 17a"
    • "Franz-Josef-Strauß-Str. 25 C"
    • "Birkenstraße12 (bei Frisör Müllermeierschulz)"

    Oder auch "Straße des 17. Juni 135".

    Siehe http://forum.de.selfhtml.org/archiv/2006/8/t135363/

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    1. Hi,

      • "Josefstraße 123"
      • "Hansstr.345"
      • "Josef Müller Schmid Str. 17a"
      • "Franz-Josef-Strauß-Str. 25 C"
      • "Birkenstraße12 (bei Frisör Müllermeierschulz)"
        Oder auch "Straße des 17. Juni 135".

      Oder auch "A 1 1" oder "B 2 3" (Mannheimer Innenstadt - Buchstabe und erste Zahl geben das Quadrat an, die zweite Zahl dann die Hausnummer).

      Es gibt auch Hausnummern wie "2 1/3".

      M.E. braucht man drei Felder:
      1. Straßenname (ausreichend Platz lassen, "Platz des Friedens und der Völkerverständigung" ist keine Erfindung)
      2. Hausnummer
      3. Adreßzusatz ("Hinterhof", "c/o Maier", "Rückgebäude", "2. OG", ...)

      Wobei 2. und 3. auch leer sein können.

      Wenn die Felder zusammengesetzt wurden, ist es praktisch unmöglich, sie automatisch wieder zu trennen.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.