2014-11-12 18 views
6

Angenommen, ich habe eine Zeichenfolge wieAdd Abstand zwischen zwei Buchstaben in einem String in R

s = "PleaseAddSpacesBetweenTheseWords" 

Wie kann ich gsub in R fügen Sie ein Leerzeichen zwischen den Wörtern verwenden, so dass ich

"Please Add Spaces Between These Words" 

Ich sollte etwas tun wie

gsub("[a-z][A-Z]", ???, s) 

Was ich für ???. Außerdem finde ich die Dokumentation für reguläre Ausdrücke für R verwirrend, so dass eine Referenz oder ein Write-up auf regulären Ausdrücken in R sehr geschätzt würde.

Antwort

20

Sie müssen nur die Übereinstimmungen erfassen und dann die \1-Syntax verwenden, um auf die erfassten Übereinstimmungen zu verweisen. Zum Beispiel

s = "PleaseAddSpacesBetweenTheseWords" 
gsub("([a-z])([A-Z])", "\\1 \\2", s) 
# [1] "Please Add Spaces Between These Words" 

Natürlich, dies setzt nur einen Abstand zwischen jeder Kleinbuchstaben/Großbuchstaben Paarungen. Es weiß nicht, was ein echtes "Wort" ist.

+0

Danke. Bezieht sich \\ 1 auf den ersten Buchstaben im Spiel, \\ 2 auf den zweiten usw.? Und warum sind die Klammern notwendig? – Ben

+1

\\ 1 bezieht sich auf den Stoff, der mit dem Inneren des ersten Satzes von Klammern übereinstimmt, und ähnlich bezeichnet \\ 2 den zweiten Satz von Klammern. In diesem Fall umgeben beide Parens reguläre Ausdrücke, die einem einzelnen Zeichen entsprechen. '[a-z]' bedeutet, dass jedes Zeichen von a bis z (Kleinbuchstaben) einmal abgeglichen wird. – blakeoft

+0

@Ben Google für "Regex Cheatsheet" herum. Das wird dir viele nützliche Informationen geben. –

Verwandte Themen