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

Hinzufügen weiterer Zeichen nach Nutzung regulärer Ausdrücke in c++

Dieses Thema im Forum "C/C++" wurde erstellt von Kadamu, 20. April 2017 um 20:22 Uhr.

  1. Kadamu

    Kadamu Grünschnabel

    Hallo zusammen,

    aktuell nutze ich reguläre Ausrücke um spezifische Wörter in einem string zu suchen und zu trennen.

    Anbei ein vereinfachtes Beispiel:

    Code (C++):
    1.  
    2.     string text = "Alice1:IscoolAlice2; Alert555678;Bob1:knowsBeepBob2;sees";
    3.     std::regex rgx("(?:Alice|Bob)\\d.");
    4.     sregex_iterator pos(text.begin(), text.end(), rgx);
    5.     sregex_iterator end;
    6.  
    7.     for (; pos != end; pos++){
    8.         cout << "Result: " << pos->str() << endl;
    9.     }
    10.  
    Als Output wird bisher das hier ausgegeben:
    Result: Alice1:
    Result: Alice2;
    Result: Bob1:
    Result: Bob2;

    Habt ihr eine Idee wie man bspw. den Inhalt ("Iscool") zwischen dem ersten Fund ("Alice1:") und dem zweiten Fund ("Alice2;") zusätzlich an dem ersten Fund dranhängen könnte?

    D.h. als Output würde ich dann allgemein das erwarten:

    Result: Alice1:Iscool
    Result: Alice2; Alert555678;
    Result: Bob1:knowsBeep
    Result: Bob2;sees

    Wenn mir hierbei jemand weiterhelfen könnte wäre ich sehr dankbar.

    Danke & viele Grüße
    Kadamu
     
  2. Jennesta

    Jennesta Erfahrenes Mitglied

    Hallo,
    ich glaube etwas mehr Input wäre hier hilfreich, also z.B. dein Text speziellen Regeln unterliegt.

    Ich bin leider kein Regex-Experte, aber wenn du alles zwischen zwei gefundenen Token als Zusatz anhängen möchtest, dann müsstest du ja nur das pos des aktuellen und das pos des nächsten Tokens nutzen um den Text dazwischen mitzunehmen (alternativ noch npos).
    Gegebenenfalls könntest du auch mit einer beliebigen Anzahl Wildcards im Regex zwischen zwei gültigen Token bzw einem Token und dem Stringende arbeiten.

    Viele Grüße
    Jennesta
     
Die Seite wird geladen...