我正在尝试从角色的右侧动态提取子字符串。
string< - adcde?7890 期望的子串:7890
为了实现这一点,我希望能够确定“?”的位置。在每个字符串中,在这个例子中“?”将是第6个角色。
最后,我的代码看起来像这样:
substr(“'''的位置+ 1,str_length(字符串))
我只需要一个能显示“?”位置的功能。在我的字符串中。
答案 0 :(得分:1)
我们可以使用str_locate
来查找角色?
的位置。它是一个正则表达式元字符,因此我们可以将它放在方括号(或转义)中以将其作为文字字符进行评估
library(stringr)
substr(string, str_locate(string, "[?]")[1] + 1, str_length(string))
#[1] "7890"
或仅使用base R
,我们可以找到与regexpr
匹配的位置,并将其用作substring
substring(string, regexpr("[?]", string)+1)
#[1] "7890"
或使用str_extract
str_extract(string, "(?<=[?])\\d+")
#[1] "7890"
string <- 'adcde?7890'
答案 1 :(得分:0)
在基础R中执行此操作:
substr(string,regexpr("\\?",string)+1,nchar(string)) # You use \\ since ? is a special character
[1] "7890"
但是你可以避免这一切,只需使用sub
sub(".*\\?","",string)
[1] "7890"