re = /^[^\d+-]*([+-]?)\s*+(\d++(?:\.\d+)?)|\G[^\d+-]*(?:([+-])\s*+((?2))|((?2)))|[+-]++|[^+-]++/
str = ' Lorem ipsum dolor sit amet.
Nullam 000 ut finibus 111 lectus.
Praesent 222 eu 333 sem lorem.
Fusce elementum 444 gravida 555 luctus.
Sed non "accumsan" - 777 lorem!
1. Vivamus at mauris mi.[1]
2. Duis ac faucibus elit.[2][3]
3. Sed sed \'tempor\' diam.[4,5]
Vivamus 2024-12-21 tincidunt tristique dolor.
"Morbi vel blandit augue?"
Morbi eu tortor 25.25 ligula.'
subst = '${2:+$1$2}${3:+$3$4}${5:++$5}'
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