re = /<(?![^<>]*\/\s*>)([a-zA-Z]+)(?:\s+[^\/<>"=\s]+(?:=(?:"[^<>"]*"?|[^=<>"\s]*"?)?)?)*>/m
str = 'should match the following
<ref>
<ref name="gbtribune.files.wordpress.com">
<ref name="gbtribune.files.wordpress.com" name2>
<ref name="gbtribune.files.wordpress.com" name2=>
<ref name=gbtribune.files.wordpress.com>
<ref name="gbtribune.files.wordpress.com>
<ref name=gbtribune.files.wordpress.com">
should not match the following:
<ref />
<ref name="gbtribune.files.wordpress.com" />
<ref name="gbtribune.files.wordpress.com" name2 />
<ref name="gbtribune.files.wordpress.com" name2= />
<ref/>
<ref name="gbtribune.files.wordpress.com"/>
<ref name="gbtribune.files.wordpress.com" name2/>
<ref name="gbtribune.files.wordpress.com" name2=/>'
# 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