Mario: Regulärer Ausdruck unvollständig.

Hallo Forum.

Folgende Sachlage: Eine Eingabezeile für eine Adresse wird ausgewertet und in zwei Teilstrings zerlegt: Straßenteil und Nummernteil. Das geht recht fix über

/(\D+)\s(\d+\b$)/

Der nun in $1 abgelegte Straßenteil soll nochmals überprüft werden und zwar darauf, ob folgende (ungültige) Zeichen enthalten sind:

/ + * ? ^ $ | \ ( ) [ ] { } @ µ

Dafür hab ich folgendes:

/([/+\*?^$|\()[]{}@µ])/

Den Ausdruck werde ich später der Einfachheit halber als [FZ] (fehlerhafte Zeichen) bezeichnen.

Funktioniert auch soweit. Nur soll es nicht nur bei einer Erkennung bleiben, sondern es soll auch ausgegeben werden, im welchem Bereich der Fehler passiert.

Beispiel:

  1. Hallo @ -> Ausgabe "@"
  2. Hallo @ Welt -> Ausgabe "@"
  3. Hallo @ Welt @ -> Ausgabe "@ Welt @"
  4. Hallo @ Welt @ Welt -> Ausgabe "@ Welt @"
  5. @ Hallo -> Ausgabe "@"
  6. @ Hallo @ -> Ausgabe "@ Hallo @"
    etc.

Meine Idee war:

/([FZ]+.*[FZ]*.*)/

1, 3 & 6 funktionieren so wie geplant. Bei den anderen passiert folgendes:

  1. Ausgabe "@ Welt" statt "@"
  2. Ausgabe "@ Welt @ Welt" statt "@ Welt @"
  3. Ausgabe "@ Hallo" statt "@"

Zerbreche mir schon seit mehreren Stunden den Kopf darüber, finde aber keine Lösung. Hoffe das mir jmd. einen Vorschlag machen kann.

Gruß,
Mario

  1. Hi Mario,

    / + * ? ^ $ | \ ( ) [ ] { } @ µ

    Was darf ein Straßennamen denn überhaupt für Zeichen enthalten? Doch eigentlich nur Buchstaben, einen Bindestrich und evntl. einen Punkt (wegen Abkürzung).

    Warum prüfst du dann nicht, ob _nur_ solche Zeichen enthalten sind:

    [1]+$

    Wäre das nicht einfacher und auch zuverlässiger?

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
    Wissen ist gut, Können ist besser, aber das Beste und Interessanteste ist der Weg dahin! (Detlef G.)

    1. a-zA-ZäöüÄÖÜ-. ↩︎

    1. Hallo Dennis!

      [1]+$

      Besser:
         [2]+$

      Sonst kommt die Stra_ß_e nicht mehr zur Geltung ... ;-)

      ℆, ℒacℎgas

      --
      Bei der intendierten Realisierung der linguistischen Simplifizierung
      des regionalen Idioms resultiert die Evidenz der Opportunität extrem
      apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
      milierter Xenologien konsequent zu eliminieren!

      1. a-zA-ZäöüÄÖÜ-. ↩︎

      2. a-zA-ZäöüÄÖÜß-. ↩︎

      1. Hi Lachgas,

        Sonst kommt die Stra_ß_e nicht mehr zur Geltung ... ;-)

        Hehe, die Hauptsache habe ich vergessen :-)

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
        Das Leben ist kein Warenhaus - es nimmt nichts zurück. (Anette Louisan)
  2. Hi,

    Folgende Sachlage: Eine Eingabezeile für eine Adresse wird ausgewertet und in zwei Teilstrings zerlegt: Straßenteil und Nummernteil. Das geht recht fix über
    /(\D+)\s(\d+\b$)/

    Was ist mit Hausnummern wie 14a oder (auch schon gesehen) 12 1/3 ?

    Oder Straßennamen wie L10, S5, T7 (wie sie in Mannheim existieren) oder Straße des 17. Juni (z.B. in Dresden)?

    Oder gar ausländischen Adressen, bei denen oft die Hausnummer vor dem Straßennamen steht wie z.B. 10 Downing Street, 1601 Pennsylvania Avenue?

    Der nun in $1 abgelegte Straßenteil

    Optimist. Siehe oben.

    cu,
    Andreas

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