re = /\[\*\s+(?<text>(?:\\\]|[^\]])+)\]/
str = 'Should not match [*A]
Should not match [*refname]
Should not match [*A text] as it is already done in the step before.
But should match [* This is the text in the ref]
And also with escaped brackets in the text [* This is \\[important\\], I think]'
subst = '<ref>$text</ref>'
result = str.gsub(re, subst)
# Print the result of the substitution
puts result
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html