Extracción de subcadena del vector en R

Estoy tratando de extraer subcadenas de un texto no estructurado. Por ejemplo, suponga un vector de nombres de países:

countries <- c("United States", "Israel", "Canada")

¿Cómo hago para pasar este vector de valores de caracteres para extraer coincidencias exactas de texto no estructurado?

text.df <- data.frame(ID = c(1:5), 
text = c("United States is a match", "Not a match", "Not a match",
         "Israel is a match", "Canada is a match"))

En este ejemplo, la salida deseada sería:

ID     text
1      United States
4      Israel
5      Canada

Hasta ahora he estado trabajando congsub por donde elimino todas las no coincidencias y luego elimino y luego elimino las filas con valores vacíos. También he estado trabajando constr_extract del paquete stringr, pero no ha tenido éxito al obtener las disposiciones correctas para la expresión regular. Cualquier ayuda sería muy apreciada!

Respuestas a la pregunta(3)

Su respuesta a la pregunta