【发布时间】:2021-04-15 16:20:18
【问题描述】:
我想选择我们可以找到表达式“X01”或“X02”的每一行:
dataEx <- data.frame(code = c("X01-X043","X034","X024","X015-X036-X033","X012","X015-X042","X019","X036","X022-X043"),res = NA )
pat1 <- c("(^|-)X01($|-|.)","(^|-)X02($|-|.)")
dataEx$res[grep(paste(pat1,collapse="|"),dataEx$code)] <- "ok"
它可以正常工作并给我结果:
code res
1 X01-X043 ok
2 X034 <NA>
3 X024 ok
4 X015-X036-X033 ok
5 X012 ok
6 X015-X042 ok
7 X019 ok
8 X036 <NA>
9 X022-X043 ok
但我想知道找到了哪种模式:
code res
1 X01-X043 X01
2 X034 <NA>
3 X024 X024
4 X015-X036-X033 X015
5 X012 X012
6 X015-X042 X015
7 X019 X019
8 X036 <NA>
9 X022-X043 X022
我对正则表达式很陌生。有简单的方法吗? (实际上,“pat1”要长得多,我正在寻找 20 种不同的模式)
【问题讨论】: