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

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:

C++:
    string text = "Alice1:IscoolAlice2; Alert555678;Bob1:knowsBeepBob2;sees";
    std::regex rgx("(?:Alice|Bob)\\d.");
    sregex_iterator pos(text.begin(), text.end(), rgx);
    sregex_iterator end;

    for (; pos != end; pos++){
        cout << "Result: " << pos->str() << endl;
    }

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
 

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