R中的字符串模式

R中的字符串模式,r,string,R,String,我有如下字符串列表:“/home/ricardo/MultiClass/data//F10/1036.txt” 给我: #> [[1]] [1] "" "home" "ricardo" "MultiClass" "data" #> "" "F10" "1036.txt" 我怎么能只保持第七的位置 #> "F10" 如果要在/之后提取一个或多个字符,直到第一个/或字符串末尾,请使用 > libr

我有如下字符串列表:“/home/ricardo/MultiClass/data//F10/1036.txt”

给我:

#> [[1]] [1] ""           "home"       "ricardo"    "MultiClass" "data"  
#> ""           "F10"        "1036.txt"
我怎么能只保持第七的位置

#> "F10"

如果要在
/
之后提取一个或多个字符,直到第一个
/
或字符串末尾,请使用

> library(stringr) 
> s <- "/home/ricardo/MultiClass/data//F10/1036.txt"
> str_extract(s, "(?<=//)[^/]+")
[1] "F10"
详细信息

  • ^
    -字符串的开头
  • *
    -尽可能多的任意0个字符
  • /
    -斜杠(上一个模式是贪婪的,字符串中只有最后一个)
  • ([^/]*)
    -捕获组#1匹配除
    /
  • /
    -最后一个斜杠
  • [^/]*
    -除
    /
  • $
    -字符串结束

可以用这种方法在R-base中完成。 我已经定义了函数
gret
来从字符串中提取模式

gret <-function(pattern,text,ignore.case=TRUE){
    regmatches(text,regexpr(pattern,text,perl=TRUE,ignore.case))
gret[1]“F10”

使用
stringr
的函数
word

library(stringr)
word(sub('.*//', '', s), 1, sep = '/')
#[1] "F10"

#where
s <- '/home/ricardo/MultiClass/data//F10/1036.txt'
库(stringr)
单词(sub('./','',s),1,sep='/')
#[1] “F10”
#在哪里

你怎么能识别它?因为它前面有
/
?如果是按位置,那么
strsplit(cls[1],split=“/”[[1]]][7]
应该可以工作。那么
basename(dirname(cls[1])
strsplit
是一个基本的R函数,而不是stringr库中的函数。所有这些都是为了帮助。
gret <-function(pattern,text,ignore.case=TRUE){
    regmatches(text,regexpr(pattern,text,perl=TRUE,ignore.case))
gsub("data|/*","",gret("(?=data/).*(?<=/)","/home/ricardo/MultiClass
/data//F10/1036.txt"))


#>[1] "F10"
library(stringr)
word(sub('.*//', '', s), 1, sep = '/')
#[1] "F10"

#where
s <- '/home/ricardo/MultiClass/data//F10/1036.txt'