r中正则表达式中\\s|*
和\\s|[*]
之间有什么区别?
> gsub('\\s|*','','Aug 2013*')
[1] "Aug2013*"
> gsub('\\s|[*]','','Aug 2013*')
[1] "Aug2013"
这里[ ]
的功能是什么?
答案 0 :(得分:4)
第一个表达式在您使用它的方式中无效,因此*
是一个特殊字符。如果您希望以特殊字符使用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: '*'
答案 1 :(得分:3)
在这里使用[]
只不过是将*
转换为文字星号。
第一个正则表达式无效(*
是特殊字符,表示“零或更多”)。
第二个正则表达式相当于
'\\s|\\*'