Christopher: Regular Expression (Integer aus String)

Hallo Leute,

ich stehe auf dem Schlauch was das Auslesen einer in einem String
enthaltenen Zahl mittels einer Regular Expression angeht. Und zwar
möchte ich gerne aus dem String "1 month" (oder aber auch "1month",
"2 months", "3 Monate") die Anzahl der Monate auslesen und schließ-
lich als Integer Wert behandeln können.

Ich denke die RegExp dürfte sprachenunabhängig sein, so dass mir
auch Programmierer, die nicht des Java mächtig sind, evtl. hier
an dieser Stelle weiterhelfen können.

Besten Dank schonmal.

Grüße aus Berlin
Christopher

  1. Hi,
    um es mal in PHP auszudrücken:
    preg_match("/(\d+)\s*(month|months|monate)/i", $string, $matches);
    echo (int)$matches[1];

    Grüße
    Thomas

    1. Moin!

      Hi,
      um es mal in PHP auszudrücken:

      <?php
      echo (int) '1 Monat';
      ?>

      Geht immer, wenn die Zahl vorn steht...

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
      1. Hi,

        <?php
        echo (int) '1 Monat';
        ?>
        Geht immer, wenn die Zahl vorn steht...

        Aber nicht in Java.

        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.
  2. Hi,

    ich stehe auf dem Schlauch was das Auslesen einer in einem String
    enthaltenen Zahl mittels einer Regular Expression angeht. Und zwar
    möchte ich gerne aus dem String "1 month" (oder aber auch "1month",
    "2 months", "3 Monate") die Anzahl der Monate auslesen und schließ-
    lich als Integer Wert behandeln können.

    Ich denke die RegExp dürfte sprachenunabhängig sein, so dass mir
    auch Programmierer, die nicht des Java mächtig sind, evtl. hier
    an dieser Stelle weiterhelfen können.

    Du brauchst also ggf. beliebig viele Leerzeichen zum Wegschmeißen gefolgt von zu merkenden beliebig vielen Ziffern gefolgt von mindestens einer Nicht-Ziffer.

    *([0-9]+)

    Wenn ich mich richtig erinnere, versucht Java im Normalfall, den ganzen String zu matchen, also noch für den Kram nach den Ziffern ein .* anhängen.

    *([0-9]+).*

    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.
    1. Hi,

      *([0-9]+)
      *([0-9]+).*

      Am Anfang sollte jeweils ein Leerzeichen stehen - wieso das hier unterschlagen wird, weiß ich nicht.

      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.