R - gsub():尝试提取“.”和“_”之间的字符串时出现问题

R - gsub() : trouble when trying to extract a string between ". " and "_"

R gsub() 语法对我来说太难了!你能帮我从“16.DA VINCI_RETOUR”中提取,例如"DA VINCI"吗?

我已经尝试过 gsub("_.+$", "", x) 但它只是删除了“_”之后的内容,我还想删除“.”之前的内容!

非常感谢您的帮助!

这是一个带有捕获组的选项,用于匹配单词 (\w+) 后跟 space 和另一个单词作为一个组的模式,并替换为捕获组的反向引用 (\1)

sub("^\d+\.\s+(\w+\s+\w+)_.*", "\1", str1)

数据

str1 <- "16. DA VINCI_RETOUR" 

使用 strsplit 的替代方案:

gsub("\d+\.\s","",
      strsplit(the_string,"_")[[1]][1])
[1] "DA VINCI"

数据:

the_string <- "16. DA VINCI_RETOUR"

.* 取开头的所有内容,\. 匹配 .,(.*) 匹配所有内容,直到并将其存储在 \1 _.* 删除其余部分。

x  <- "16. DA VINCI_RETOUR"
sub(".*\. (.*)_.*", "\1", x)
#[1] "DA VINCI"

x  <- "7. TILLEUL_RETOUR"
sub(".*\. (.*)_.*", "\1", x)
#[1] "TILLEUL"