re = /(?:
#start by finding the initial position of the table start, in order to store the match position for \G
TABLE\n\K|
#after we've found the table head, continue matching using this position. make sure we arent at the beginning of the string
\G(?<!^)
)
#capture the data we're interested in
(?:
#make sure there is no 'END' in the string
(?!END)
#match everything until the line ending
.
)*
#consume the newline at the end of the string
\n/
str = ''
subst = '%\\0'
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