re = /<(\w*?)>/
str = '<soapenv:Envelope...>
   <soapenv:Header/>
   <soapenv:Body>
      <urn:ClosedRequest>
         <ExternalApplicationNumber>4816</ExternalApplicationNumber>
         <PersonDataList>
            <!--1 or more repetitions:-->
            <PersonData>
               <PersonExternalIdentifier>sa1</PersonExternalIdentifier>
               <EligibilityEndDate>2017-12-31</EligibilityEndDate>
               <!--Optional:-->
               <ReasonCode>60</ReasonCode>
               <PersonDeathDate>2015-09-02</PersonDeathDate>
            </PersonData>
         </PersonDataList>
      </urn:ClosedRequest>
   </soapenv:Body>
</soapenv:Envelope>'
# 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