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

Jac*_*tad 6 regex r

我有一个像下面这样的字符向量:

char <- c("cancer_6_53_7575_tumor.csv", "control_7_4_7363_healthy.csv")
Run Code Online (Sandbox Code Playgroud)

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

values <- unlist(qdapRegex::rm_between(char, "7", ".", extract = TRUE))
Run Code Online (Sandbox Code Playgroud)

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

PoG*_*bas 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"
Run Code Online (Sandbox Code Playgroud)
  1. 它在7之后搜索3位数字符串(使其成为4位数字符串): 7\\d{3}
  2. 并开始记录模式直到第一个.:(7\\d{3}.*)\\.
  3. 然后它打印记录的模式: \\1