如何在R中选择字符串的一部分?

时间:2017-01-09 12:01:06

标签: r regex string subset

我在大文本文件中有类似下面的字符串。如何仅选择"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") }

2 个答案:

答案 0 :(得分:2)

我们可以使用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"

答案 1 :(得分:0)

你可以从这样的正则表达式开始:

  

SN =([A-Z] +:[\ d - ] +):

例如:https://regex101.com/r/0qBwYc/1

解释:

SN= =&gt;文字匹配&#34; SN =&#34;

[A-Z]+ =&gt;匹配1或任何upercase

: =&gt;文学上匹配&#34;:&#34;

[\d-]+ =&gt;匹配任何数字或字符&#34; - &#34; 1次或更多次

: =&gt;文学上匹配&#34;:&#34;

([A-Z]+:[\d-]+) =&gt;括号用于创建匹配组,因此您只能获得匹配的部分&#34; [A-Z] +:[\ d - ] +&#34;