C ++ std :: regex Reguläre Ausdrücke Mehrere Übereinstimmungen finden

8

Ich versuche, ein Zertifikat in C ++ zu analysieren und entschied, dass es eine gute Gelegenheit war, Regex zu lernen. Ich habe gerade vor einer Stunde etwas über Regex gelernt, entschuldige also meinen Mangel an Wissen.

Ich suche nach allen Organisationseinheiten, die mit einem Eintrag verknüpft sind.

Ich mache folgendes:

%Vor%

Warum wird mir das nicht alle Ergebnisse (2) geben, die zu meiner Marke passen? Gibt es eine Möglichkeit, das zu bekommen?

    
Kyle Preiksa 13.09.2013, 18:49
quelle

2 Antworten

5

Verwenden Sie stattdessen eine negierte Zeichenklasse. Ich habe das Gefühl, dass deine Charakterklassen sich nicht so verhalten, wie du denkst, sie sind ...

%Vor%

[^,]* passt alle Zeichen außer einem Komma an.

Versuchen Sie für die Übereinstimmungen, eine Schleife zu verwenden:

%Vor%

Ich weiß nicht viel C ++, aber ich fand diese Dokumentationsseite , die meiner Meinung nach sein sollte ein bisschen nützlicher.

Der Code, den es hier hat, ist

%Vor%

BEARBEITEN: Ich merke nur, dass Sie in den Parametern Kommata haben können, wie in O= , die nicht mit [^,] funktionieren. Stattdessen können Sie diese Regex verwenden:

%Vor%

Sie können ein Beispiel mit O= hier sehen.

    
Jerry 13.09.2013, 19:04
quelle
6

Es sieht so aus, als ob Sie nur versuchen, eine Zeichenfolge zu erhalten, die wie OU=XXXXXXXXXXXXXXXXX aussieht, gefolgt von einem Komma oder einem Semikolon.

Diese Regex wird das tun:

%Vor%

Was das bedeutet, ist die Zeichenkette OU= , gefolgt von mindestens einem Zeichen, das nicht ist, ein Komma oder ein Semikolon:

%Vor%

Hier ist ein Codebeispiel, das diese Regex verwendet, um die Übereinstimmungen zu drucken (basierend auf dem Beispiel hier ) :

%Vor%     
Tharwen 13.09.2013 19:12
quelle

Tags und Links