I have these two vectors:
sample1 <- c(\".aaa\", \".aarp\", \".abb\", \".abbott\", \".abogado\")
sample2 <- c(\"try1.aarp\", \"www.tryagain.aaa\", \"25
Try this,
sample1 <- c(".aaa", ".aarp", ".abb", ".abbott", ".abogado")
sample2 <- c("try1.aarp", "www.tryagain.aaa", "255.255.255.255", "onemoretry.abb.abogado")
paste0("(",paste(sub("\\.", "\\\\.", sample1), collapse="|"),")\\b")
# [1] "(\\.aaa|\\.aarp|\\.abb|\\.abbott|\\.abogado)\\b"
gsub(paste0("(",paste(sub("\\.", "\\\\.", sample1), collapse="|"),")\\b"), "", sample2)
# [1] "try1" "www.tryagain" "255.255.255.255" "onemoretry"
Explanation:
sub("\\.", "\\\\.", sample1) escapes all the dots. Since dots are special chars in regex.
paste(sub("\\.", "\\\\.", sample1), collapse="|") combines all the elements with | as delimiter.
paste0("(",paste(sub("\\.", "\\\\.", sample1), collapse="|"),")\\b") creates a regex like all the elements present inside a capturing group followed by a word boundary. \\b is a much needed one here . So that it would do an exact word match.