Regex R:正则表达式查找以获取两个模式之间的内容
我有一个带字符串的向量,比如:Regex R:正则表达式查找以获取两个模式之间的内容,regex,r,Regex,R,我有一个带字符串的向量,比如: x <-c('kjsdf_class-X1(z)20_sample-318TT1X.3','kjjwer_class-Z3(z)29_sample-318TT2X.4') x这与您的想法有点不同,但它可以完成任务 gsub("(.*class-)|(.)|(_sample.*)", "\\2", x) 逻辑如下,您有3组字符串: 1) 字符*以class- 2) 字符 3) 以\u sample开头的字符和* 从那些你想保留第二个“设置”\\2 或者其他
x <-c('kjsdf_class-X1(z)20_sample-318TT1X.3','kjjwer_class-Z3(z)29_sample-318TT2X.4')
x这与您的想法有点不同,但它可以完成任务
gsub("(.*class-)|(.)|(_sample.*)", "\\2", x)
逻辑如下,您有3组字符串:
1) 字符*
以class-
2) 字符
3) 以\u sample
开头的字符和*
从那些你想保留第二个“设置”\\2
或者其他更容易理解的:
gsub("(.*class-)|(_sample.*)", "", x)
取以类-
结尾的任意数量的字符,字符串\u sample
后跟任意数量的字符,并将其替换为NULL
字符“
我们可以使用str\u从库(stringr)
提取所有
库(stringr)
unlist(str_extract_all(x),(?当然是这样的(那我改天再看一下)。你能简单解释一下正则表达式模式吗?这个答案需要更详细的解释。
library(stringr)
unlist(str_extract_all(x, '(?<=class-)[^_]+(?=_sample)'))
#[1] "X1(z)20" "Z3(z)29"
x1 <- paste(x, x)
str_extract_all(x1, '(?<=class-)[^_]+(?=_sample)')
#[[1]]
#[1] "X1(z)20" "X1(z)20"
#[[2]]
#[1] "Z3(z)29" "Z3(z)29"
gsub('.*-([^-]+)_.*','\\1',x)
[1] "X1(z)20" "Z3(z)29"