2016-10-31 156 views
2

我試圖從長字符串中的矢量中找到第一個匹配的字符串。我有例如example_string <- 'LionabcdBear1231DogextKittyisananimalTurtleisslow'matching_vector<- c('Turtle',Dog')現在我想它返回的「狗」,因爲這是在我們的例子中串看到matching_vector第一子:LionabcdBear1231 extKittyisananimalTurtleisslow在R的長字符串中找到第一個匹配的子字符串

我已經嘗試過pmatch(example_string,matching_vector)但不起作用。很明顯,因爲它不適用於子串...

謝謝! Tim

+1

嘗試'庫(stringi); stri_match_first(example_string,正則表達式=膏(matching_vector,塌陷= 「|」))' – akrun

+0

感謝@akrun。這工作! –

+0

謝謝,我發表我的意見作爲解決方案 – akrun

回答

1

我們可以使用stri_match_firststringi

library(stringi) 
stri_match_first(example_string, regex = paste(matching_vector, collapse="|")) 
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" 
+0

謝謝,這也適用,但我用@ akrun的解決方案! –

相關問題