1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Regex - Ergebnis zu lang

Dieses Thema im Forum "Sonstige Sprachen" wurde erstellt von Tommy57, 13. September 2014.

  1. Tommy57

    Tommy57 Erfahrenes Mitglied

    Hallo,

    ich versuche gerade in einem Text alle Teile rauszufischen, die mit einer Zahl in Klammern anfangen und drei ! enden. Problem ist, dass er mir am Anfang alle Klammern mit rein nimmt, ich will aber nur genau die letzte Klammer.

    Code (Text):
    1. (28) (173) (1) Das ist eins!!! (32) (2) Das ist zwei!!! (81) (72) (3) Das ist drei!!!
    2.  
    3. \([0-9]{1,3}\).*?!!!
    Als Ergebnis hätte ich gerne:
    (1) Das ist eins!!!
    (2) Das ist zwei!!!
    (3) Das ist drei!!!

    erhalte aber:
    (28) (173) (1) Das ist eins!!!
    (32) (2) Das ist zwei!!!
    (81) (72) (3) Das ist drei!!!

    Gruß, Tommy
     
  2. saftmeister

    saftmeister Nutze den Saft! Premium-User

    Das Problem ist, das '.' - also jedes beliebige Zeichen - auch auf '(' und ')' zutreffend ist. Daher musst du es ausklammern. Versuch mal das hier:

    Code (Text):
    1. \([0-9]{1,3}\)[^(]*?!!!
    Bei mir funktioniert dieses PHP:

    Code (PHP):
    1. <?php
    2. $text = '(28) (173) (1) Das ist eins!!! (32) (2) Das ist zwei!!! (81) (72) (3) Das ist drei!!!';
    3.  
    4. $regex = '/(\([0-9]{1,3}\)[^(]*?\!\!\!)/';
    5.  
    6. preg_match_all($regex, $text, $matches);
    7.  
    8. array_shift($matches);
    9.  
    10. var_dump($matches[0]);
     
    Zuletzt bearbeitet: 13. September 2014
    Tommy57 gefällt das.
  3. Tommy57

    Tommy57 Erfahrenes Mitglied

    Ahh cool, das funktioniert. Ja, das kann man direkt in Notepad++ so reinschreiben und als Regulären Ausdruck verwenden. Danke:D
     
Die Seite wird geladen...