从值在 R 中变化的字符串中提取字母数字模式

问题描述 投票:0回答:1

提前感谢您提供的任何帮助,并对无法从其他示例中弄清楚这一点表示歉意。

我有一个包含文件名称的向量,例如:

vec = c("Img_1_(set1)_2L4_s.ext", "Img_37_(set19)_2R4_s.ext",  "Img_187_(set94)_4L4_s.ext", "Img_77_(set39)_4R2_s.ext")

我想通过提取创建两个单独的附加向量:

1. 并排数字之间的关键字母(L 或 R),具体情况因情况而异。例如,结果:L,R,L,R

2. “set”字符串,加上数字(在不同情况下会有所不同)附加在括号之间(带或不带括号)。例如,结果 1:(set1)、(set19)、(set94)、(set39);结果2:设置1,设置19,设置94,设置39

理想情况下使用 stringer(),但我对其他 - 更简单? - 库/函数持开放态度。

对于情况1.,我尝试了

str_extract(vec, "(?<= \\)_)[0-9]*")
,作为获取“)_”模式后跟数字[0-9]的方法,但我得到的回报都是NA(我认为我还没有完全通过) “)”模式很好)。

对于情况2.,我不得不简单地提取设置数字

str_extract(vec, "(?<=set)[0-9]*")
,并通过粘贴“设置”一词来创建另一个变量;显然对于大数据帧来说并不理想。

r string special-characters alphanumeric
1个回答
0
投票
set = str_extract(vec, pattern = "set[0-9]+")
main = str_extract(vec, pattern = "L|R")
set
# [1] "set1"  "set19" "set94" "set39"
main
# [1] "L" "R" "L" "R"
© www.soinside.com 2019 - 2024. All rights reserved.