使用 R 和 stringr 包(或任何其他与此相关的包)
我想在第 n 次出现“_”后提取字符串,并以第一次出现“_”结束。
例如:
df <- c("J_J_HERE_jfdkaldjhieuwui","blahblah_ffd_THIS_fjdkalfj_jdka_")
我想要这个:
df_edited <- c("HERE","THIS")
或者对于这个例子,我想从“er”中提取一个空格后的所有内容,并以第一次出现 _ 结束:
df2 <- c("ex HERE_jfdkaldjhieuwui","ex_THIS_fjdkalfj_jdka_")
我想要这个:
df_edited <- c("HERE","THIS")
哪里有一个很好的备忘单来理解字符串条件,因为我很困惑。
我们可以根据“n”创建一个模式
n <- 2
pat <- sprintf('([^_]+_){%d}([^_]+)_.*', n)
sub(pat, '\\2', df)
#[1] "HERE" "THIS"
细节 -
捕获一个或多个非字符_
([^_]+
) 后面跟着一个_
重复“n”次 (2),后跟下一组不是_
(([^_]+)
) 后面跟着一个_
和其他角色。在替换中,指定第二个捕获组的反向引用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)