Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe bei Regex

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • rammi
    hat ein Thema erstellt Hilfe bei Regex.

    Hilfe bei Regex

    Hallo,

    ich versuche folgenden dynamisch erstellten String anhand von Wörter und|oder|mit in Gruppen aufzuteilen:
    Code:
    Tiroler Blutwurst mit Sauerkraut und Bratkartoffeln oder Röstis
    Rauskommen soll:
    PHP-Code:
    [
        
    => 'Tiroler Blutwurst',
        
    => 'mit Sauerkraut',
        
    => 'und Bratkartoffel',
        
    => 'oder Röstis'

    Mein Versuch scheitert:
    Code:
    (( und *| mit *| oder *)[^(oder |und |mit)])
    Mein Ansatz:
    ( und *| mit *| oder *)
    finde Leerzeichen
    • gefolgt von und/oder/mit
    • gefolgt von Leerzeichen und jeden Character bis zum Antreffen von (oder |und |mit)

    Danke für Hilfe

  • tomBuilder
    antwortet
    chapeau
    wenn dies keine übung ist :
    die ganze speisekarte und dann auch noch die sommerkarte ....
    wie den auch sei, eoin array hast du auch so, die logik musst du ja irgendwie noch bauen
    rammi

    Einen Kommentar schreiben:


  • rammi
    antwortet
    Zitat von kaminbausatz Beitrag anzeigen
    Solche Geschichten fordern doch ein wenig, halten jung und sind somit gut für meine Rentnerbirne..

    PHP-Code:
    <?php
    $re 
    '/^.*?(?=mit|und|oder)|(mit|und|oder)(.*?)(?=(mit|und|oder))|(?=mit|und|oder).*$/m';
    $str 'Tiroler Blutwurst mit Sauerkraut und Bratkartoffeln oder Röstis';
    preg_match_all($re$str$matches);
    echo 
    "<pre>";
    print_r ($matches[0]);
    echo 
    "</pre>";
    Code:
    Array
    (
    [0] => Tiroler Blutwurst
    [1] => mit Sauerkraut
    [2] => und Bratkartoffeln
    [3] => oder Röstis
    )
    Das schaut gut aus und aus meiner Sicht eleganter als mit explode() und foreach() zu basteln

    Zitat von kaminbausatz Beitrag anzeigen
    ...
    Außerdem habe ich jetzt Appetit auf:
    "Tiroler Blutwurst mit Sauerkraut und Bratkartoffeln"
    Kannst mir ja eine Portion schicken...
    Verdient hättest du es ja

    Danke

    Einen Kommentar schreiben:


  • kaminbausatz
    antwortet
    Solche Geschichten fordern doch ein wenig, halten jung und sind somit gut für meine Rentnerbirne..

    PHP-Code:
    <?php
    $re 
    '/^.*?(?=mit|und|oder)|(mit|und|oder)(.*?)(?=(mit|und|oder))|(?=mit|und|oder).*$/m';
    $str 'Tiroler Blutwurst mit Sauerkraut und Bratkartoffeln oder Röstis';
    preg_match_all($re$str$matches);
    echo 
    "<pre>";
    print_r ($matches[0]);
    echo 
    "</pre>";
    Code:
    Array
    (
        [0] => Tiroler Blutwurst 
        [1] => mit Sauerkraut 
        [2] => und Bratkartoffeln 
        [3] => oder Röstis
    )
    Außerdem habe ich jetzt Appetit auf:
    "Tiroler Blutwurst mit Sauerkraut und Bratkartoffeln"
    Kannst mir ja eine Portion schicken..

    Einen Kommentar schreiben:


  • tomBuilder
    antwortet
    Zitat von rammi Beitrag anzeigen
    Mmmh...das war mein erster Ansatz. Aber um tatsächlich zu gruppieren wie oben angegeben, denke ich, das eine RegEx besser geeignet ist.
    ich würde jetzt mit :
    sammle hauptgericht
    wenn mt sammle beilage
    wenn oder sammle nächste beilage
    weitermachen.

    Einen Kommentar schreiben:


  • rammi
    antwortet
    Zitat von tomBuilder Beitrag anzeigen

    gerne, die seite erkärt aber auch wieso nicht
    wenn du sicher sein kannst dass leerzeichen vorkommen:

    PHP-Code:
    var_dump (explode(" ""Tiroler Blutwurst mit Sauerkraut und Bratkartoffeln oder Röstis")); 
    so den string zerlegelen.
    Mmmh...das war mein erster Ansatz. Aber um tatsächlich zu gruppieren wie oben angegeben, denke ich, das eine RegEx besser geeignet ist.

    Einen Kommentar schreiben:


  • tomBuilder
    antwortet
    Zitat von rammi Beitrag anzeigen
    Danke für den Hinweis, die Seite benutze ich immer, aber die RegEx funktioniert dort auch nicht, deshalb meine Anfrage zur Hilfe
    gerne, die seite erkärt aber auch wieso nicht
    wenn du sicher sein kannst dass leerzeichen vorkommen:

    PHP-Code:
    var_dump (explode(" ""Tiroler Blutwurst mit Sauerkraut und Bratkartoffeln oder Röstis")); 
    so den string zerlegelen.
    dann kommst du sicher allein weiter ?

    Einen Kommentar schreiben:


  • rammi
    antwortet
    Zitat von tomBuilder Beitrag anzeigen
    ...nebenbei halte ich regex hier nicht für das mittel der wahl und es stellt sich die frage , ob das eine hausaufgabe ist
    Keine Hausaufgabe und wenn das nicht dein geeignete Mittel der Wahl ist, dann lass das doch hier wissen welcher dein Ansatz ist.

    Einen Kommentar schreiben:


  • rammi
    antwortet
    Zitat von tomBuilder Beitrag anzeigen

    regex versuche werden bsp hier:
    https://regex101.com/
    Danke für den Hinweis, die Seite benutze ich immer, aber die RegEx funktioniert dort auch nicht, deshalb meine Anfrage zur Hilfe

    Einen Kommentar schreiben:


  • tomBuilder
    antwortet
    Mein Versuch scheitert:
    Code:
    Code:
    (( und *| mit *| oder *)[^(oder |und |mit)])
    Mein Ansatz:
    regex versuche werden bsp hier:
    https://regex101.com/

    brauchbar erklärt .

    und weil ich es so gerne mache :
    https://www.php.de/forum/webentwickl...rf-hier-posten

    nebenbei halte ich regex hier nicht für das mittel der wahl und es stellt sich die frage , ob das eine hausaufgabe ist

    Einen Kommentar schreiben:

Lädt...
X