如何在R语言中提取字符串最后一组双冒号后的尾部内容
R语言提取字符串中最后一组
::后的尾部内容 给定如下字符串向量:
vec <- c("brown::value-twostancenpq", "twitter_ld_homepage:xxxRestApisCreateTweet::create_longesttweetthereis::TaggedId", "dumbRestApi::check_allProducts::ProductId", "dumbRestApi::check_allCustomers::CustomerId", "twitter_ld_homepage:unknownApisCreateEdit::create_id::NewProfileId")
要提取每个字符串最后一组::之后的内容,有两种简洁的实现方式:
方法一:使用base R的sub函数(无需额外包)
利用正则表达式的贪婪匹配特性,直接替换掉最后一组::之前的所有内容:
sub(".*::", "", vec)
运行结果:
[1] "value-twostancenpq" "TaggedId" "ProductId" "CustomerId" "NewProfileId"
方法二:使用stringr包的str_extract函数
如果习惯使用tidyverse生态工具,可以用正向预查正则精准匹配目标内容:
library(stringr) str_extract(vec, "(?<=::)[^:]+$")
该正则的含义:
(?<=::):正向预查,确保目标内容前是::[^:]+:匹配任意非冒号字符(避免误匹配单个冒号的情况)$:匹配字符串结尾,确保取到的是最后一组::后的内容
运行结果和方法一完全一致。
内容的提问来源于stack exchange,提问作者user2845095
相关产品推荐
相关产品推荐

