View original Gist on GitHub
tag = 'article' text_class = '.article {' text_element = 'article {' puts text_element.reverse.gsub(%r/#{tag.reverse}(?![.#])/oi, "div.HTML5#{tag}".reverse).reverse puts text_class.reverse.gsub(%r/#{tag.reverse}(?![.#])/oi, "div.HTML5#{tag}".reverse).reverse puts '.some_text article .something_else {'.reverse.gsub(%r/#{tag.reverse}(?![.#])/oi, "div.HTML5#{tag}".reverse).reverse # changes (as expected) # div.HTML5article { # leaves alone (perfect) # .article { # changes (as expected) # .some_text div.HTML5article .something_else {