2012-07-23 17 views
7

ho una stringa che è lettere misti e numeri:R regex gsub lettere e numeri separati

"The sample is 22mg" 

mi piacerebbe dividere le stringhe in cui un numero è immediatamente seguito da lettera come questa:

"The sample is 22 mg" 

ho provato questo:

gsub('[0-9]+[[aA-zZ]]', '[0-9]+ [[aA-zZ]]', 'This is a test 22mg') 

ma non sto ottenendo i risultati desiderati.

Qualche suggerimento?

risposta

14

È necessario utilizzare le parentesi di acquisizione nell'espressione regolare e i riferimenti di gruppo nella sostituzione. Per esempio:

gsub('([0-9])([[:alpha:]])', '\\1 \\2', 'This is a test 22mg') 
Non c'è niente

-R specifici qui; la guida R per regex e gsub dovrebbe essere di qualche utilità.

10

È necessario riferimento all'indietro:

test <- "The sample is 22mg" 
> gsub("([0-9])([a-zA-Z])","\\1 \\2",test) 
[1] "The sample is 22 mg" 

Tutto ciò tra parentesi viene ricordato. Quindi sono accessibili da \ 1 (per la prima entità in paren), \ 2, ecc. Il primo backslash esegue l'escape dell'interpretazione della barra retroversa in R in modo che venga passata al parser di espressioni regolari.

Problemi correlati