regex.escape <- function(string) {
gsub("([][{}()+*^$|\\\\?.])", "\\\\\\1", string)
}
BuildRegex <- function(search) {
x<-strsplit(search,"\\s+")
paste0("^(?=.*(?<!\\w)", paste(regex.escape(unlist(x)), collapse="(?!\\w))(?=.*(?<!\\w)"), "(?!\\w))")
}
BuildRegex("John Tolkien")
grepl(BuildRegex("John Tolkien"), "John Ronald Reuel Tolkien", perl=TRUE)
grepl(BuildRegex("Tolkien John"), "John Ronald Reuel Tolkien", perl=TRUE)
grepl(BuildRegex("John Ronald Tolkien"), "John Ronald Reuel Tolkien", perl=TRUE)
cmVnZXguZXNjYXBlIDwtIGZ1bmN0aW9uKHN0cmluZykgewogIGdzdWIoIihbXVt7fSgpKypeJHxcXFxcPy5dKSIsICJcXFxcXFwxIiwgc3RyaW5nKQp9CkJ1aWxkUmVnZXggPC0gZnVuY3Rpb24oc2VhcmNoKSB7Cgl4PC1zdHJzcGxpdChzZWFyY2gsIlxccysiKQoJcGFzdGUwKCJeKD89LiooPzwhXFx3KSIsIHBhc3RlKHJlZ2V4LmVzY2FwZSh1bmxpc3QoeCkpLCBjb2xsYXBzZT0iKD8hXFx3KSkoPz0uKig/PCFcXHcpIiksICIoPyFcXHcpKSIpCn0KQnVpbGRSZWdleCgiSm9obiBUb2xraWVuIikKZ3JlcGwoQnVpbGRSZWdleCgiSm9obiBUb2xraWVuIiksICJKb2huIFJvbmFsZCBSZXVlbCBUb2xraWVuIiwgcGVybD1UUlVFKQpncmVwbChCdWlsZFJlZ2V4KCJUb2xraWVuIEpvaG4iKSwgIkpvaG4gUm9uYWxkIFJldWVsIFRvbGtpZW4iLCBwZXJsPVRSVUUpCmdyZXBsKEJ1aWxkUmVnZXgoIkpvaG4gUm9uYWxkIFRvbGtpZW4iKSwgIkpvaG4gUm9uYWxkIFJldWVsIFRvbGtpZW4iLCBwZXJsPVRSVUUp