如何保留与 r 中的正则表达式匹配的字符串部分?

How do I keep parts of a string that match a regular expression in r?

如果你在 r 中有一个字符串,它有类似...

messystuffSample0001moremessystuff 你想得到 样本 0001

这样做的好方法是什么,尤其是当 messystuff 和 moremessystuff 的内容和大小不同时。感兴趣的部分是 "Sample" 加上 4 位数字。

您可以使用 stringr 包中的 str_extract()

library(stringr)

mess <- "messystuffSample0001moremessystuff"

str_extract(mess, "Sample\d{4}")
# [1] "Sample0001"

这会使用正则表达式 Sample\d{4} 提取正则表达式匹配项,匹配 "Sample" 后跟 4 个数字。

正如 Frank 所指出的,这也可以使用 base R 来完成:

regmatches(mess, regexpr("Sample\d{4}", mess))

您可以使用 sub:

sub(".*(Sample\d{4}).*", "\1", "messystuffSample0001moremessystuff")
# [1] "Sample0001"