2013-11-03 15 views

risposta

3

La prima espressione non è valida nel modo in cui si utilizza, quindi * è un carattere speciale. Se si desidera utilizzare sub o gsub in questo modo con caratteri speciali, è possibile utilizzare il set di parametri fixed = TRUE.

Questo prende la stringa che rappresenta il modello da cercare così com'è e ignora qualsiasi carattere speciale.

Vedere Pattern Matching and Replacement nella documentazione R.

x <- 'Aug 2013****' 
gsub('*', '', x, fixed=TRUE) 
#[1] "Aug 2013" 

tua seconda espressione è solo con una classe di caratteri [] per * per evitare la fuga, lo stesso ..

x <- 'Aug 2013*' 
gsub('\\s|\\*', '', x) 
#[1] "Aug2013" 

Per quanto riguarda la spiegazione della vostra prima espressione: \\s|*

\s  whitespace (\n, \r, \t, \f, and " ") 
|  OR 

E la seconda espressione: \\s|[*]

\s  whitespace (\n, \r, \t, \f, and " ") 
|  OR 
[*]  any character of: '*' 
3

L'uso di [] non è nient'altro che scappare dallo * a un asterisco letterale.

La prima espressione regolare non è valida (* è un carattere speciale che significa "zero o più").

La seconda regex è equivalente a

'\\s|\\*' 
Problemi correlati