代码之家  ›  专栏  ›  技术社区  ›  Mark Szymanski

获取ruby中正则表达式中group的值

  •  1
  • Mark Szymanski  · 技术社区  · 15 年前

    我在Ruby中有以下正则表达式:

    \<name\>(.+)\<\/name\>
    

    在if语句中,如下所示:

    if line =~ /\<name\>(.+)\<\/name\>/
    

    有什么方法可以得到团体的价值吗 (.+) ?

    事先谢谢!

    2 回复  |  直到 15 年前
        1
  •  3
  •   the Tin Man    15 年前

    不要使用regex解析XML或HTML,而是使用真正的解析器。我喜欢Nokogiri:

    require 'nokogiri'
    
    doc = Nokogiri::XML('<somecontainingtags><name>blah</name></somecontainingtags>')
    
    # find all occurences
    doc.search('//name').map {|n| n.inner_text } # => ["blah"]
    
    # find the first occurance
    doc.at('//name').inner_text # => "blah"
    
        2
  •  5
  •   Reese Moore    15 年前

    它在变量中 $1