2010-11-15 21 views
1

我在紅寶石下面的正則表達式:獲取組的值在正則表達式中的Ruby

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

內的if語句,就像這樣:

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

有沒有什麼辦法讓該組的價值(.+)

在此先感謝!

+0

我想你是指'=〜',只是我假設的一個小錯字。 – 2010-11-15 03:50:48

+0

@Reese摩爾,固定。 – 2010-11-15 04:13:38

+4

你不應該使用Regex來解析XML或HTML。你應該使用解析器,比如[Nokogiri](http://nokogiri.org)。如果你只是要使用正則表達式,你不需要轉義'<' and '>'。下面的工作就好了,'(。+)<\/name>', – 2010-11-15 04:15:28

回答

3

而不是使用正則表達式解析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" 
5

它是可變$1