获取字符串的最后一部分

get last part of a string

我想获取变量的最后一个子串(下划线后的最后一部分),在本例中:"myvar".

x = "string__subvar1__subvar2__subvar3__myvar"

我的尝试导致匹配从第一个子字符串开始,例如

library(stringr)
str_extract(x, "__.*?$)

我如何在 R 中执行此操作?

你可以这样做:

library(stringr)
str_extract(x,"[a-zA-Z]+$")

编辑: 也可以使用环视功能:str_extract(x,"(?=_*)[a-zA-Z]+$")

同样来自 baseR

regmatches(x,gregexpr("[a-zA-Z]+$",x))[[1]]

来自文档 ?regex:

The caret ^ and the dollar sign $ are metacharacters that respectively match the empty string at the beginning and end of a line.

你可以做到

sub('.*\__', '', x)

这行得通吗?抱歉,希望我能正确理解您的问题。

substr(x,gregexpr("_",x)[[1]][length(gregexpr("_",x)[[1]])]+1,nchar(x))
[1] "myvar"