2017-01-09 12 views
-2

У меня есть строки вроде ниже одного в большом текстовом файле. Как я могу выбрать только часть во второй строке между "SN=" и ":2832397" i.e. "RK:7573-0" из этого?Как выбрать часть строки в R?

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

, используя регулярное выражение с 'gsub', будет вашим лучшим выбором, возможно http://stackoverflow.com/questions/6109882/regex-match- могут быть полезны все символы между двумя строками – zacdav

ответ

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" 
0

Вы можете начать с регулярного выражения, как это:

С.Н. = ([AZ] +: [\ d -] +):

Exemple: https://regex101.com/r/0qBwYc/1

объяснение:

SN= => матч literaly "SN ="

[A-Z]+ => матч 1 или любой состоящие из заглавных

: => матч literaly ":"

[\d-]+ => соответствует любой цифре или carácter «-» 1 раз или больше

: => матч literaly «:»

([A-Z]+:[\d-]+) => скобка являются использование для создания подбора групп, так что вы можете получить только часть, которая соответствует "[AZ] +: [\ d -] +"