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

Regex 如何保持字符串中与r中正则表达式匹配的部分?,regex,r,string-matching,Regex,R,String Matching,如果你在r中有一个字符串,它有点像 MessyStuff示例0001更多MessyStuff 你想得到什么 样本0001 如果messystuff和更多messystuff在内容和大小上有所不同,那么最好的做法是什么。感兴趣的部分是“Sample”加上4位数字。您可以从stringr包中使用str\u extract() library(stringr) mess <- "messystuffSample0001moremessystuff" str_extract(mess, "Sa

如果你在r中有一个字符串,它有点像

MessyStuff示例0001更多MessyStuff 你想得到什么 样本0001


如果messystuff和更多messystuff在内容和大小上有所不同,那么最好的做法是什么。感兴趣的部分是“Sample”加上4位数字。

您可以从
stringr
包中使用
str\u extract()

library(stringr)

mess <- "messystuffSample0001moremessystuff"

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

您可以使用
sub

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

您可以使用
\\d{4}
而不是
\\d
四次匹配一行中的多个数字。@AlexA。谢谢你的提示。我相信有一天我会用的。@Frank:Neat,我不知道
regmatches()
。如果你把它作为一个答案,你会从我这里得到+1。否则,如果你允许的话,我会把它包括在这里。@Frank:几乎总是有一个基本的R方式,它可能并不优雅。:)但是在这种情况下,
regmatches()
使基本解决方案比我想象的更优雅。尽管我因为问这个问题而受到惩罚,但我很高兴我做到了。str_extract是我需要的,也是我现在使用的@马克:太好了,我很高兴它对你有用。
sub(".*(Sample\\d{4}).*", "\\1", "messystuffSample0001moremessystuff")
# [1] "Sample0001"