Используйте правильный инструмент для работы. Инструмент для анализа данных HTML или XML - Nokogiri
require 'nokogiri'
count = Nokogiri::XML.parse(text).root.children.count {|node| node.name == "url" }
Если вы хотите вычислить также все <url>
узлы у внуков (рекурсивно), тогда попробуйте метод traverse
(метод регулярных выражений)не будет работать в этом случае)
count = 0
Nokogiri::XML.parse(text).traverse { |node| count += 1 if node.name == "url" }
puts count # => 3
Вы не должны использовать регулярные выражения для анализа XML-данных. Regex не был разработан для этого и подвержен ошибкам.