我有一些代码,如下所示。只要在comment
中发生某些评论,就会调用html
方法。然后,我正在进行正则表达式匹配,我想计算解析注释中的匹配数。它的印刷如下
1
2
3
4
5
我想要的只是打印5
,因为这是匹配的总数。有人可以帮忙吗。
class PlainTextExtractor < Nokogiri::XML::SAX::Document
def comment(string)
# I am defining some regexp here
m = Regexp.new(re, Regexp::IGNORECASE);
if m.match(string)
$count += 1
puts $count
end
end
end
parser = Nokogiri::HTML::SAX::Parser.new(PlainTextExtractor.new)
parser.parse_memory(html)
答案 0 :(得分:1)
只需将puts $count
移出循环即可。在调用解析器之后,您可以将它放在最后。
答案 1 :(得分:0)
如果您只对可以进行的比赛数量感兴趣
m = Regexp.new(re, Regexp::IGNORECASE);
puts string.scan(m).length
答案 2 :(得分:0)
一种方法是让你的类在实例变量内部计算匹配数,例如@count。然后使用attr_reader创建一个方法,允许您在最后读取其值。您也不需要全局变量。示例(未测试):
class PlainTextExtractor < Nokogiri::XML::SAX::Document
attr_reader :count
def comment(string)
# I am defining some regexp here
m = Regexp.new(re, Regexp::IGNORECASE);
if m.match(string)
@count += 1
end
end
end
pt_extractor = PlainTextExtractor.new
parser = Nokogiri::HTML::SAX::Parser.new(pt_extractor)
parser.parse_memory(html)
puts pt_extractor.count