我有以下代码:
temp <- "44C"
sub("^([-+]?[0-9]+)([CF])$","\\2",temp)
这正确地返回 C 。
然而,当我尝试
时temp <- "44"
sub("^([-+]?[0-9]+)([CF])$","\\2",temp)
我期待一个空的向量。相反,我得到“ 44 ”。
我说错了吗?
答案 0 :(得分:5)
在你的第二种情况下没有\2
。所以它不能替换任何东西并且返回原始字符串不变。
当正则表达式在sub中失败时,则返回原始字符串。
答案 1 :(得分:2)
如果您将?
添加到正则表达式中,它将起作用:
temp <- c("44C", "44")
sub("^([-+]?[0-9]+)([CF])?$","\\2",temp)
# [1] "C" ""