首页 > 解决方案 > 提取R中的最后一个正则表达式匹配

问题描述

我正在使用mutate()withstr_extract()将数据框中的字符串列压缩为单个关键字列。我的问题是其中一个字符串包含两个关键字,而第二个对我来说更重要。但是,正则表达式总是先找到我告诉它寻找的替代方案。有没有办法改变这个?

MWE(无mutate()):

teststring <- "abcdef"
str_extract(teststring, "b|c|a")

我希望能够按照我选择的顺序找到模式,而不是测试字符串中的第一个。

标签: rregex

解决方案


如果您只想返回所选订单的第一个匹配项,则基于 Gki 在评论中的回答。我们可以用以下代码包装代码:

teststring <- "ccccbbbaaaaqwerty"

which.min(is.na((sapply(c("b","c","a"), stringr::str_extract, string=teststring))))

b 
1

推荐阅读