【问题标题】:How to select a portion of a string in R? [closed]如何在R中选择字符串的一部分? [关闭]
【发布时间】:2017-05-23 16:35:06
【问题描述】:
我在一个大文本文件中有如下字符串。如何只选择第二行中"SN=" 和":2832397" 之间的部分,即"RK:7573-0"?
SIGN="000F 0E70 FA83 B72F D215 C7EE 4AF4 6440 A547 12B1 0603 \
SN=RK:7573-0:2832397:369963
1086 0857 BFF1 5FC2 CE6F C87D 7C00 DF64 C1AD DD39") }
【问题讨论】:
标签:
r
regex
string
subset
【解决方案1】:
我们可以使用str_extract
library(stringr)
as.vector(na.omit(str_extract(lines, "(?<=SN=).*(?=:2832397)")))
#[1] "RK:7573-0"
或base R
gsub("^[^=]+\\=|(:\\d+){2,}$", "", grep("SN=", lines, value = TRUE))
#[1] "RK:7573-0"
【解决方案2】:
您可以从这样的正则表达式开始:
SN=([A-Z]+:[\d-]+):
示例:https://regex101.com/r/0qBwYc/1
解释:
SN= => 匹配文字 "SN="
[A-Z]+ => 匹配 1 或任何大写
: => 匹配文字“:”
[\d-]+ => 匹配任何数字或字符“-”1次或更多
: => 匹配文字“:”
([A-Z]+:[\d-]+) => 括号用于创建匹配组,因此您只能获取匹配“[A-Z]+:[\d-]+”的部分