Created
March 16, 2009 13:12
-
-
Save flavorjones/79869 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# in response to El_Matador, one way to search for regular expressions using Nokogiri | |
require 'rubygems' | |
require 'nokogiri' | |
value = Nokogiri::HTML.parse(<<-HTML_END) | |
"<html> | |
<body> | |
<p id='para-1'>A</p> | |
<p id='para-22'>B</p> | |
<h1>Bla</h1> | |
<p id='para-3'>C</p> | |
<p id='para-4'>D</p> | |
<div class="foo" id="eq-1_bl-1"> | |
<p id='para-5'>3</p> | |
</div> | |
<div class="bar" id="eq-1_bl-1"> | |
<p id='para-5'>3</p> | |
</div> | |
</body> | |
</html>" | |
HTML_END | |
# my_block is given | |
my_bl = "1" | |
# my_eq corresponds to this regex | |
my_eq = "[0-9]+" | |
# full regex to search for in node ids | |
full_regex = %r(eq-#{my_eq}_bl-#{my_bl}) | |
filter_by_id = Class.new do | |
attr_accessor :matches | |
def initialize(regex) | |
@regex = regex | |
@matches = [] | |
end | |
def filter(node_set) | |
@matches += node_set.find_all { |x| x['id'] =~ @regex } | |
end | |
end.new(full_regex) | |
value.css("div.foo:filter()", filter_by_id) | |
filter_by_id.matches.each do |node| | |
puts node | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment