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