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: '*'
'*' è un carattere speciale nella regex, quindi '[]' impone un'interpretazione letterale del carattere. – joran