Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex R:正则表达式查找以获取两个模式之间的内容_Regex_R - Fatal编程技术网

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"