x <- c("aasdfadsf cat asdfadsf dog", "asfdadsfads dog asdfasdfadsf cat")
sub(".*(?|(dog).*(cat)|(cat).*(dog)).*", "\\1 \\2", x, perl=TRUE)
##unlist(regmatches(x, gregexpr("dog(?=.*cat)|cat(?=.*dog)", x, perl=TRUE)))
eCA8LSBjKCJhYXNkZmFkc2YgY2F0IGFzZGZhZHNmIGRvZyIsICJhc2ZkYWRzZmFkcyBkb2cgYXNkZmFzZGZhZHNmIGNhdCIpCnN1YigiLiooP3woZG9nKS4qKGNhdCl8KGNhdCkuKihkb2cpKS4qIiwgIlxcMSBcXDIiLCB4LCBwZXJsPVRSVUUpCiMjdW5saXN0KHJlZ21hdGNoZXMoeCwgZ3JlZ2V4cHIoImRvZyg/PS4qY2F0KXxjYXQoPz0uKmRvZykiLCB4LCBwZXJsPVRSVUUpKSk=