re = /[\+\-]+[\r\n](\|(\s+<info>[^<]+<\/info>\s+\|)+)[\r\n](\+|\-)+[\r\n]((\|(\s+[^\|]+\s+\|)+[\r\n])+)(\+|\-)+/m
str = '+--------+------+-------+
| <info>number</info> | <info>char</info> | <info>word</info> |
+--------+------+-------+
| 1 | a | alfa |
| 2 | b | beta |
| 3 | c | gamma |
+--------+------+-------+'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
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