2010-11-15 5 views
1

Je l'expression régulière suivante dans Ruby:Obtenez la valeur du groupe dans l'expression régulière dans Ruby

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

Dans si la déclaration, comme suit:

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

Est-il possible d'obtenir la valeur du groupe (.+)?

Merci d'avance!

+0

Je pense que vous voulez dire '= ~', juste une petite faute de frappe que je suppose. –

+0

@Reese Moore, corrigé. –

+4

vous ne devriez pas vraiment utiliser Regex pour analyser XML ou HTML. Vous devriez utiliser un analyseur tel que [Nokogiri] (http://nokogiri.org). Si vous n'utilisez que regex, vous n'avez pas besoin d'échapper '<' and '>'. Ce qui suit fonctionnera très bien, ' (. +) <\/name>', –

Répondre

3

Plutôt que d'utiliser regex pour analyser XML ou HTML, utilisez un vrai analyseur. J'aime 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

Il est dans la variable $1

Questions connexes