fork(1) download
  1. regex.escape <- function(string) {
  2. gsub("([][{}()+*^${|\\\\?])", "\\\\\\1", string)
  3. }
  4.  
  5. sort.by.length.desc <- function (v) v[order( -nchar(v)) ]
  6.  
  7. s <- "artist picasso \"picasso (painting)\" france zoo"
  8. keys <- c(t(read.table(text=s, header=FALSE)))
  9. keys <- sort.by.length.desc(keys)
  10. pattern = paste(regex.escape(keys), collapse="|")
  11. ## Test
  12. cat(pattern, sep="\n")
  13. txt <- "The artist was born in france and named picasso picasso (painting)"
  14. length(unlist(gregexpr(pattern, txt)))
Success #stdin #stdout 0.16s 176448KB
stdin
Standard input is empty
stdout
picasso \(painting\)|picasso|artist|france|zoo
[1] 4