input = "# Title\n## Subtitle\n### Subsubtitle\nLorem ipsum b(dolor) sit i(amet), consectetur u(adipisicing) elit"
 
regExes = {
 
    h3: [/^### (.*)$/, "<h3>", "</h3>"],
    h2: [/^## (.*)$/, "<h2>", "</h2>"],
    h1: [/^# (.*)$/, "<h1>", "</h1>"],
    b: [/\bb\((.*?)\)/, "<strong>", "</strong>"],
    i: [/\bi\((.*?)\)/, "<i>", "</i>"],
    u: [/\bu\((.*?)\)/, "<u>", "</u>"],
 
}
 
for index, regEx  in regExes
 
    actualNode = regExes[index]
    #print actualNode, "\n"
    input = input.gsub(actualNode[0], "#{actualNode[1]}\\1#{actualNode[2]}")
 
end
 
puts input
				aW5wdXQgPSAiIyBUaXRsZVxuIyMgU3VidGl0bGVcbiMjIyBTdWJzdWJ0aXRsZVxuTG9yZW0gaXBzdW0gYihkb2xvcikgc2l0IGkoYW1ldCksIGNvbnNlY3RldHVyIHUoYWRpcGlzaWNpbmcpIGVsaXQiCgpyZWdFeGVzID0gewoKICAgIGgzOiBbL14jIyMgKC4qKSQvLCAiPGgzPiIsICI8L2gzPiJdLAogICAgaDI6IFsvXiMjICguKikkLywgIjxoMj4iLCAiPC9oMj4iXSwKICAgIGgxOiBbL14jICguKikkLywgIjxoMT4iLCAiPC9oMT4iXSwKICAgIGI6IFsvXGJiXCgoLio/KVwpLywgIjxzdHJvbmc+IiwgIjwvc3Ryb25nPiJdLAogICAgaTogWy9cYmlcKCguKj8pXCkvLCAiPGk+IiwgIjwvaT4iXSwKICAgIHU6IFsvXGJ1XCgoLio/KVwpLywgIjx1PiIsICI8L3U+Il0sCgp9Cgpmb3IgaW5kZXgsIHJlZ0V4ICBpbiByZWdFeGVzCgogICAgYWN0dWFsTm9kZSA9IHJlZ0V4ZXNbaW5kZXhdCiAgICAjcHJpbnQgYWN0dWFsTm9kZSwgIlxuIgogICAgaW5wdXQgPSBpbnB1dC5nc3ViKGFjdHVhbE5vZGVbMF0sICIje2FjdHVhbE5vZGVbMV19XFwxI3thY3R1YWxOb2RlWzJdfSIpCgplbmQKCnB1dHMgaW5wdXQ=