我无法理解以下结果
>f <- "anno_26//anno_-1_5_252138_4817.rds"
>sub("anno_26//anno_.*?_(.*?)_.*?_.*", "", f)
[1] "4817.rd"
>sub("anno_26//anno_.*?_.*?_(.*?)_.*", "", f)
[1] ""
为什么在前正则表达式中,“。*”与任何内容都不匹配,而在后者中它对应于4817.rd?
答案 0 :(得分:0)
不确定要实现的目标,但使用反向引用可能会帮助您取得进展:
f <- "anno_26//anno_-1_5_252138_4817.rds"
sub("(anno_26\\/\\/anno_.*?_)(.*?)(_.*?_.*)", "\\1\\3", f, perl=TRUE)
[1] "anno_26//anno_-1__252138_4817.rds"
sub("(anno_26\\/\\/anno_.*?_.*?_)(.*?)(_.*)", "\\1\\3", f, perl=TRUE)
[1] "anno_26//anno_-1_5__4817.rds"