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

时间:2015-05-20 19:09:20

标签: regex r string-matching

如果你在r中有一个字符串,那就像......

messystuffSample0001moremessystuff 而且你想得到 Sample0001

这样做会有什么好办法,特别是如果杂乱的东西和更多的内容和大小不同的话。感兴趣的部分是" Sample"再加上4位数。

2 个答案:

答案 0 :(得分:3)

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

library(stringr)

mess <- "messystuffSample0001moremessystuff"

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

使用正则表达式Sample\\d{4}提取正则表达式匹配,匹配“Sample”后跟4位数。

正如弗兰克指出的那样,这也可以用基数R来完成:

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

答案 1 :(得分:1)

您可以使用sub

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