r中正则表达式中`\\ s | *`和`\\ s | [*]`的区别?

时间:2013-11-03 02:12:46

标签: regex r

r中正则表达式中\\s|*\\s|[*]之间有什么区别?

> gsub('\\s|*','','Aug 2013*')
[1] "Aug2013*"
> gsub('\\s|[*]','','Aug 2013*')
[1] "Aug2013"

这里[ ]的功能是什么?

2 个答案:

答案 0 :(得分:4)

第一个表达式在您使用它的方式中无效,因此*是一个特殊字符。如果您希望以特殊字符使用subgsub,则可以使用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|\\*'