C++ Regex Single Line Flag verwenden

Wolly300

Lt. Junior Grade
Registriert
Mai 2014
Beiträge
507
Hallo zusammen,

ich bin gerade dabei, meinen File-Import mit Regex zu sortieren und stoße dabei auf ein unerwartetes Problem.

Hier mal mein Text mit Pattern Regex101.

Für das richtige ausführen des Patterns ist es wichtig, das ich dass "single line" Flag verwenden kann. Jedoch bin ich in C++ (in VS 2017) auf noch keine Möglichkeit gestoßen, um wie in C# ein Regex_Option hinzu zu fügen.

Ich danke euch für die Hilfe.
 
Kommt drauf an was deine Lib (std?) dir ermöglicht. System.Text.RegularExpressions.Regex erlaubt dir bspw. mittels (?s) am Anfang inline die Modifier zu setzen.
 
Der C++ Standard sieht kein "single line" Flag vor. Du kannst aber "[\s\S]" statt "." verwenden. Dann geht's auch ohne single line Flag.

Zur Erklärung: "[\s\S]" bedeutet alle Whitespace-Zeichen (\s) und alle Nicht-Whitespace-Zeichen (/S). Das inkludiert auch Newlines und hat damit (fast) den gleichen Effekt wie das single line Flag.

Wenn du trotzdem unbedingt eine Regex Engine mit single line Flag verwenden möchtest, guck dir mal Boost Regex an. Das wäre quasi der Industriestandard.
 
Zurück
Oben