R 获取字符串的最后一部分

R 获取字符串的最后一部分,r,regex,stringr,R,Regex,Stringr,我希望得到变量的最后一个子字符串(下划线后的最后一部分),在本例中为“myvar” 我的尝试会导致从第一个子字符串开始的匹配,例如 library(stringr) str_extract(x, "__.*?$) 如何在R中执行此操作?您可以执行以下操作: library(stringr) str_extract(x,"[a-zA-Z]+$") 编辑: 您也可以使用lookaround功能:str_extract(x,(?=*)[a-zA-Z]+$” 同样来自baseR regmatches

我希望得到变量的最后一个子字符串(下划线后的最后一部分),在本例中为“myvar”

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

library(stringr)
str_extract(x, "__.*?$)
如何在R中执行此操作?

您可以执行以下操作:

library(stringr)
str_extract(x,"[a-zA-Z]+$")
编辑: 您也可以使用lookaround功能:
str_extract(x,(?=*)[a-zA-Z]+$”

同样来自baseR

regmatches(x,gregexpr("[a-zA-Z]+$",x))[[1]]
从文档
?regex

插入符号^和美元符号$分别是元字符 在行首和行尾匹配空字符串

你可以做:

library(stringr)
str_extract(x,"[a-zA-Z]+$")
编辑: 您也可以使用lookaround功能:
str_extract(x,(?=*)[a-zA-Z]+$”

同样来自baseR

regmatches(x,gregexpr("[a-zA-Z]+$",x))[[1]]
从文档
?regex

插入符号^和美元符号$分别是元字符 在行首和行尾匹配空字符串

你能行

sub('.*\\__', '', x)
你能行

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

这行吗?对不起,我希望我能正确理解你的问题

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

这行吗?对不起,我希望我能正确理解你的问题

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

这个
tail(strsplit(x,,,uuuuu',fixed=T)[[1]],1]
?是的,这是有效的。这个
tail(strsplit(x,,,uuuuuuu',fixed=T)[[1]],1]
?是的,这是有效的。如果字符串的结尾也可以是类似于“subvar4”的东西,那么这种方法需要稍加修改,对吗?当我将搜索字符串修改为
y=“string_uuusubvar1_uuuusubvar2_usubvar3_myvar”
结果也是“myvar”-但在这种情况下,它没有在“uuuu”字符串上拆分。
str_uextract(x),(?=*)[a-zA-Z]+$”
这是怎么回事,@Henk抱歉,兄弟,从你的问题中我从来没有得到你需要通过(下划线)拆分的信息不用担心,我应该把这一点说得更清楚,并对问题进行了编辑。这段代码很有效。如果字符串的结尾也可以是“subvar4”,那么这种方法需要稍加修改,对吗?当我将搜索字符串修改为
y=“string\uuuuuusubvar1\uuuuuusubvar2\usubvar3\umyvar”
时,结果也是“myvar”“-但在这种情况下,它没有在“uuu”字符串上拆分。
str_uextract(x),(?=*)[a-zA-Z]+$”
这是怎么回事,@Henk抱歉,兄弟,我从来没有从你的问题中得到你需要通过uuu(下划线)拆分的消息。别担心,我应该把这说得更清楚,然后编辑这个问题。这段代码有效。它生成了
“subvar2\u subvar3\u myvar”
而不是
myvar
。只需再次运行它,生成myvar。这生成了
“subvar2\u subvar3\u myvar”
而不是
myvar
。只需再次运行它,生成myvar。是的,您完全理解正确。我只是希望这能简单一点。是的,你完全理解。我只是希望这能简单一点。