r中的正则表达式 \\s|*
和有什么区别?\\s|[*]
> gsub('\\s|*','','Aug 2013*')
[1] "Aug2013*"
> gsub('\\s|[*]','','Aug 2013*')
[1] "Aug2013"
这里的作用是[ ]
什么?
第一个表达式在您使用它的方式上是无效的,因此*
是一个特殊字符。如果要使用sub
或gsub
这种方式带有特殊字符,可以使用fixed = TRUE
参数集。
这采用表示正在搜索的模式的字符串,并忽略任何特殊字符。
请参阅文档Pattern Matching and Replacement
。R
x <- 'Aug 2013****'
gsub('*', '', x, fixed=TRUE)
#[1] "Aug 2013"
你的第二个表达式只是使用一个字符类[]
来*
避免转义,就像..
x <- 'Aug 2013*'
gsub('\\s|\\*', '', x)
#[1] "Aug2013"
至于你的第一个表达的解释:\\s|*
\s whitespace (\n, \r, \t, \f, and " ")
| OR
第二个表达式:\\s|[*]
\s whitespace (\n, \r, \t, \f, and " ")
| OR
[*] any character of: '*'
这里的使用[]
只不过是为了逃避*
字面星号。
第一个正则表达式无效(*
是特殊字符,意思是“零个或多个”)。
第二个正则表达式相当于
'\\s|\\*'