我有像:
这样的字符串s <- "text-32190-3910-text-1671"
我想只获得第n次出现,例如第二个,一个模式,例如一组数字(数字,&#34; \ d +&#34;)。因此,s
中第二次出现的数字会给我&#34; 3910&#34;。认为它必须简单地由grep()(和family)构造完成,但无法在SO(?)处找到示例。
编辑:另一个案例是:
s2 <- "jklsdKSfdkdlsKLLSDK-kdslkSKKSK"
然后我希望第三次出现大写字母[A-Z] +,在s2
这将是&#34; SKKSK&#34;。
答案 0 :(得分:4)
user20650使用gregexpr()
和regmatches()
混合的评论是解决此问题的好方法:
R> s <- "text-32190-3910-text-1671"
R> regmatches(s, gregexpr("\\d+", s) )[[1]][2]
[1] "3910"
R> s2 <- "jklsdKSfdkdlsKLLSDK-kdslkSKKSK"
R> regmatches(s2, gregexpr("[A-Z]+", s2) )[[1]][2]
[1] "KLLSDK"