Включить как одну, так и несколько текстовых строк с помощью Regex (в Ruby)?

поэтому у меня есть проблема, когда я должен перечислить каждую страну в списке в Excel, используя Open-URI. Все работает правильно, но я не могу понять, как заставить мою «строку» RegExp включать страны с одним именем (например, «Швеция»), а также такие страны, как Южная Африка, разделенные пробелом и т. д. Надеюсь, я Я правильно понял себя, и ниже я включу соответствующие фрагменты кода.

текст, который я хочу сопоставить, следующий (например):

<a href="wf.html">Wallis and Futuna</a>
<a href="ym.html">Yemen</a>

В настоящее время я застрял с этим регулярным выражением:

/a.+="\w{2}.html">(\w*)<.+{1}/

Как видите, проблем с соответствием «Йемен» нет. Хотя я все еще хочу, чтобы код мог соответствовать как «Уоллис, так и Футуна, И Йемену». Возможно, если бы был способ включить все в данное «>blabla bla‹»? Любые мысли? Я был бы очень благодарен!


person Fjurg    schedule 25.03.2013    source источник
comment
Важно показать образцы данных и результаты, которые вы хотите.   -  person the Tin Man    schedule 25.03.2013


Ответы (2)


Для вашего тестового образца,

/<a[^>]+href="\w{2}.html">([\w\s]+)<\/a>/
person Arie Xiao    schedule 25.03.2013
comment
Решение, основанное на регулярных выражениях, является хрупким и потерпит неудачу, если HTML изменится. Представьте, что произойдет, если в href будет отсутствовать завершающий ", будет `= ` вместо =, если в тексте ссылки будут знаки препинания или в теге не будет закрывающего </a>. - person the Tin Man; 25.03.2013

Обычно плохо использовать Regex при работе с извлечением сущностей HTML.

require 'nokogiri' 

parser = Nokogiri::HTML.parse(your_html)
country_links = parser.css("a")
country_links.each{|link| puts link['href']; puts link.text;}
person Michael Papile    schedule 25.03.2013
comment
Я согласен. Использование регулярных выражений для «парсинга» HTML оказалось плохой идеей. - person Patrick Oscity; 25.03.2013
comment
+1 Это единственное действительно пуленепробиваемое решение. HTML слишком нерегулярен для шаблона регулярного выражения. - person the Tin Man; 25.03.2013
comment
Спасибо за ваш ответ. Я попробовал ваше решение с успешным результатом. Я мог бы добавить, что программа предназначена только для образовательных целей, и тем не менее я ценю ваш вклад! - person Fjurg; 26.03.2013