在R中的长字符串中查找第一个匹配的子字符串

时间:2016-10-31 17:10:04

标签: r regex string

我正在尝试从长字符串中的向量中找到第一个匹配的字符串。我有例如example_string <- 'LionabcdBear1231DogextKittyisananimalTurtleisslow'matching_vector<- c('Turtle',Dog')现在我希望它返回'Dog',因为这是我们在示例字符串中看到的matches_vector中的第一个子字符串:LionabcdBear1231 Dog extKittyisananimalTurtleisslow

我已经尝试pmatch(example_string,matching_vector),但它不起作用。显然因为它不适用于子串......

谢谢! 蒂姆

2 个答案:

答案 0 :(得分:2)

以下解决方案是否适合您?

example_string <- 'LionabcdBear1231DogextKittyisananimalTurtleisslow'
matching_vector<- c('Turtle','Dog')
match_ids <- sapply(matching_vector, function(x) regexpr(x ,example_string)) 
result <- names(match_ids)[which.min(match_ids)]
> result
[1] "Dog"

答案 1 :(得分:1)

我们可以使用stri_match_first

中的stringi
library(stringi)
stri_match_first(example_string, regex = paste(matching_vector, collapse="|"))