regex.escape <- function(string) {
gsub("([][{}()+*^${|\\\\?.])", "\\\\\\1", string)
}
sort.by.length.desc <- function (v) v[order( -nchar(v)) ]
A <- c("This :/ :/ :) ^^","is :/ ^^", "weird^^ :)")
B <- c(":)",":/","^^")
B <- sort.by.length.desc(B)
pattern <- paste(regex.escape(B), collapse="|")
regmatches(A, gregexpr(pattern, A))
cmVnZXguZXNjYXBlIDwtIGZ1bmN0aW9uKHN0cmluZykgewogIGdzdWIoIihbXVt7fSgpKypeJHt8XFxcXD8uXSkiLCAiXFxcXFxcMSIsIHN0cmluZykKfQoKc29ydC5ieS5sZW5ndGguZGVzYyA8LSBmdW5jdGlvbiAodikgdltvcmRlciggLW5jaGFyKHYpKSBdIAoKQSA8LSBjKCJUaGlzIDovIDovIDopIF5eIiwiaXMgOi8gXl4iLCAid2VpcmReXiA6KSIpCkIgPC0gYygiOikiLCI6LyIsIl5eIikKCkIgPC0gc29ydC5ieS5sZW5ndGguZGVzYyhCKQpwYXR0ZXJuIDwtIHBhc3RlKHJlZ2V4LmVzY2FwZShCKSwgY29sbGFwc2U9InwiKQpyZWdtYXRjaGVzKEEsIGdyZWdleHByKHBhdHRlcm4sIEEpKQ==