x <- c('qux$foo$bar','qux$foo$bar; input$test$a$a','qux$`foo`; bar$`baz`; x$uvw','qux$`fo o`') gsub('(\\w*)(?|\\$(\\w+)|\\$`([^`]*)`)', '\\1[["\\2"]]', x, perl=TRUE)
Standard input is empty
[1] "qux[[\"foo\"]][[\"bar\"]]" [2] "qux[[\"foo\"]][[\"bar\"]]; input[[\"test\"]][[\"a\"]][[\"a\"]]" [3] "qux[[\"foo\"]]; bar[[\"baz\"]]; x[[\"uvw\"]]" [4] "qux[[\"fo o\"]]"