fork download
  1. story = 'A long foo ago, in a foo bar baz, baz away...foobar'
  2. string_matches = ['foo', 'foo', 'bar', 'baz', 'baz', 'foobar'] # words can be repeated
  3. # story = 'A long **foo** ago, in a **foo** **bar** **baz**, **baz** away...**foobar**'
  4. p story.gsub(/\b(?:#{Regexp.union(string_matches.uniq.sort { |a,b| b.length <=> a.length }).source})\b/, '**\0**')
  5. # If the whole word check is not necessary
  6. p story.gsub(Regexp.union(string_matches.uniq.sort { |a,b| b.length <=> a.length }), '**\0**')
  7.  
Success #stdin #stdout 0s 6300KB
stdin
Standard input is empty
stdout
"A long **foo** ago, in a **foo** **bar** **baz**, **baz** away...**foobar**"
"A long **foo** ago, in a **foo** **bar** **baz**, **baz** away...**foobar**"