2014-11-12 17 views
6

Supponiamo che io sono una stringa comeaggiungere spazio tra due lettere in una stringa in R

s = "PleaseAddSpacesBetweenTheseWords" 

Come posso usare gsub in R aggiungere uno spazio tra le parole in modo che ricevo

"Please Add Spaces Between These Words" 

Dovrei fare qualcosa come

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

Cosa metto per ???. Inoltre, trovo che la documentazione delle espressioni regolari per R confonda in modo che un riferimento o una riscrittura sulle espressioni regolari in R siano molto apprezzate.

risposta

20

È sufficiente acquisire le corrispondenze, quindi utilizzare la sintassi \1 per fare riferimento alle corrispondenze acquisite. Ad esempio

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

Naturalmente, questo mette solo uno spazio tra ogni minuscoli/maiuscoli lettera accoppiamenti. Non sa cosa sia una vera "parola".

+0

Grazie. \\ 1 si riferisce alla prima lettera della partita, \\ 2 alla seconda, ecc.? E perché sono necessarie le parentesi? – Ben

+1

\\ 1 si riferisce alla roba che corrisponde all'interno del primo gruppo di parentesi, e allo stesso modo \\ 2 si riferisce al secondo insieme di parentesi. In questo caso, entrambi i riquadri circondano le espressioni regolari che corrispondono a un singolo carattere. '[a-z]' significa abbinare qualsiasi carattere dalla a alla z (in minuscolo) una volta. – blakeoft

+0

@Ben Google in giro per "regex cheatsheet". Questo ti darà molte informazioni utili. –

Problemi correlati