Platz in der camel case string mit regulärem Ausdruck

9

Ich führe meine Frage aus ein Leerzeichen zwischen zwei Wörtern .

Voraussetzung: Teilen Sie eine Kamelkasten-Zeichenfolge und fügen Sie Leerzeichen vor dem Großbuchstaben ein, dem ein kleiner Buchstabe folgt, oder nichts. Der Platz sollte nicht zwischen Großbuchstaben entstehen.

zB: CSVFilesAreCoolButTXT ist eine Zeichenkette, die ich auf diese Weise ausgeben möchte CSV Files Are Cool But TXT

Ich fuhr einen regulären Express auf diese Weise:

%Vor%

Wenn Sie mehr als 2 Wörter haben, müssen Sie die g-Flagge verwenden, um alle zu vergleichen.

%Vor%

Wenn Sie versuchen, Wörter wie CSVFile zu trennen, müssen Sie möglicherweise stattdessen diese Regexp verwenden:

%Vor%

Aber immer noch nicht so, wie ich meine Anforderungen gestellt habe.

    
KMX 12.03.2013, 18:46
quelle

1 Antwort

14
%Vor%

Und auch

%Vor%

Der Text des Betreffstrings, der dem Regexmuster entspricht, wird durch den Ersetzungsstring ' ' ersetzt, wobei sich , usw. auf die Teilstrings beziehen, die von den Erfassungsgruppen () übereinstimmen.

bezieht sich auf den Teilstring, der dem ersten ([A-Z]) Teilmuster entspricht, und bezieht sich auf den Teilstring, der dem ersten ([a-z]) Teilmuster usw. entspricht.

Aufgrund des alternierenden Zeichens | muss die Regex entweder dem Untermuster ([A-Z])([A-Z])([a-z]) oder dem Untermuster ([a-z])([A-Z]) entsprechen, um eine Übereinstimmung zu erzielen, wenn also mehrere der Erfassungsgruppen übereinstimmen bleibt unübertroffen. Diese Erfassungsgruppen können in der Ersetzungszeichenfolge referenziert werden, sie haben jedoch keine Auswirkungen darauf - sie verweisen effektiv auf eine leere Zeichenfolge.

Der Platz in der Ersetzungszeichenfolge stellt sicher, dass bei jeder Übereinstimmung ein Leerzeichen in die Betreffzeichenfolge eingefügt wird (das nachgestellte g -Flag bedeutet, dass die Engine für reguläre Ausdrücke nach mehr als einer Übereinstimmung sucht).

    
MikeM 12.03.2013, 19:49
quelle

Tags und Links