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:
Aber immer noch nicht so, wie ich meine Anforderungen gestellt habe.
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).
Tags und Links regex