re = /<\s*((?:[\w-]+:)?)node2\b[^>]*>\s*(\w+)\s+(\w+)\s+(\w+)\s+(\w+)\s*<\s*\/\s*\1node2\s*>/i
str = '<NODE1>A1</NODE1>
<NODE2 id="1234" title="Second node">B1 B2 B3 B4 </ NODE2 >
< node2>A1 B2 C3 ZZZ4</node2>
<namespace:node2>A1 A2 A3 A4</namespace:node2>
< other-namespace:node2 attr = "value"> W X Y Z</other-namespace:node2>
<NODE3>C1</NODE3>'
# 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