如何保留与 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"
如果你在 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"