sub返回不正确的数据

时间:2014-08-26 11:57:47

标签: regex r

我有以下代码:

temp <- "44C"
sub("^([-+]?[0-9]+)([CF])$","\\2",temp)

这正确地返回 C

然而,当我尝试

temp <- "44"
sub("^([-+]?[0-9]+)([CF])$","\\2",temp)

我期待一个空的向量。相反,我得到“ 44 ”。

我说错了吗?

2 个答案:

答案 0 :(得分:5)

在你的第二种情况下没有\2。所以它不能替换任何东西并且返回原始字符串不变。 当正则表达式在sub中失败时,则返回原始字符串。

答案 1 :(得分:2)

如果您将?添加到正则表达式中,它将起作用:

temp <- c("44C", "44")
sub("^([-+]?[0-9]+)([CF])?$","\\2",temp)
# [1] "C" ""