Просто небольшая настройка соответствия в определенной позиции: добавьте $
после вашего search_item
, то есть регулярное выражение , которое указывает: оно должно совпадать, если оно присутствует только в конце string.
data$match_ab <- str_extract(data[,2], str_c("AL$", collapse = "|")); data;
X Y match_ab
1 1 <NA>
2 2 Washington, DC <NA>
3 3 Huntsville, AL AL
4 4 Mobile,AL AL
5 5 ALL OVER <NA>
Предположим, что AL находится в середине строки, тогда это может быть более общим для использования:
data <- data.frame(X = (1:5), Y = c("", "Washington, DC", "Huntsville, AL,
SOMETHING_AT_THE_END", "Mobile,AL", "ALL OVER")); data;
X Y
1 1
2 2 Washington, DC
3 3 Huntsville, AL, SOMETHING_AT_THE_END
4 4 Mobile,AL
5 5 ALL OVER
data$match_ab <- str_extract(data[,2], str_c("AL(?!L)", collapse = "|")); data;
X Y match_ab
1 1 <NA>
2 2 Washington, DC <NA>
3 3 Huntsville, AL, SOMETHING_AT_THE_END AL
4 4 Mobile,AL AL
5 5 ALL OVER <NA>
Где (?!L)
означает не !
, а затем ?
L
.