2014-12-17 3 views
1

У меня есть Nodeset, который возвращается с использованием search.Как совместить регулярное выражение с текстом тега p, используя Nokogiri?

Я хочу найти <p> тег, который содержит «заказ» или «{доход}» или «Доход» или «{доход} в год», так что я написал регулярное выражение:

/(?i)order+|(\{*income\s*\}*\w*)/ 

сейчас Я хочу тег <p>, который имеет вышеуказанный текст. Как это сделать, используя регулярное выражение, используя Nokogiri?

+0

Показать нам HTML образец, демонстрирующее то, что вы Речь идет о. В общем случае мы не используем regexp для поиска узлов. И CSS, и XPath позволяют нам заглядывать в текст тегов, поэтому это отправные точки. –

ответ

3

Если у вас уже есть NodeSet, который вы хотите искать дальше, используя регулярное выражение:

re = /(?i)order+|(\{*[Ii]ncome\s*\}*\w*)/ 
nodes = doc.search(…) # whatever you have already 
orders = nodes.select{ |n| n.name=='p' && n.text =~ re } 

Однако, я хотел бы сделать это следующим образом:

orders = doc.xpath('//p[contains(.,"Order") or contains(.,"Income")]') 
Смежные вопросы