提取部分字符串以4位数字开头,以句点

时间:2018-02-03 20:21:04

标签: r regex

我有一个如下字符向量:

char <- c("cancer_6_53_7575_tumor.csv", "control_7_4_7363_healthy.csv")

我想提取字符串中以4位患者ID中的“7”开头并以“。”结尾的部分,但是当该患者ID之前有7时,以下方法不起作用。

values <- unlist(qdapRegex::rm_between(char, "7", ".", extract = TRUE))

如何指定它必须以4位数字中的7开头?

2 个答案:

答案 0 :(得分:6)

您可以使用:

char <- c("cancer_6_53_7575_tumor.csv", "control_7_4_7363_healthy.csv")
gsub(".*(7\\d{3}.*)\\..*$", "\\1", char)
[1] "7575_tumor" "7363_healthy"
  1. 在7之后搜索3位数字符串(使其成为4位数字符串):7\\d{3}
  2. 并开始将模式记录到第一个.(7\\d{3}.*)\\.
  3. 然后打印录制的模式:\\1

答案 1 :(得分:3)

另一种方法是使用stringr

library(stringr)
str_extract(char, '7\\d{3}[^\\.]*')
## [1] "7575_tumor"   "7363_healthy"

它会匹配以7开头的4个数字和点到地址的所有数字 - .