Deux principes :
1. Comme tu veux les deux valeurs autour du =, il est plus logique de ne faire qu’une fois le boulot (une seule fois la même expression régulière).
2. Quand on veut s’arrêter au premier caractère X, l’expression régulière qui précède X se base sur [^X]*, pas sur .*.
Résultat :
File.open('test.txt').each_line do |line|
line.sub!(/[;#].*/, '') # enlever les commentaires de fin de ligne
line.strip! # enlever les espaces en trop
next if line.empty?
if line =~ /\s*([^=\s]*)\s*=\s*([^\s]*)/
name, value = 1,ドル 2ドル
print ".#{name}. == .#{value}.\n"
end
end
La variable value n’est jamais nil car 2ドル peut prendre la chaîne vide.
[^] # Re: manque bang ?!
Posté par Sylvain Sauvage . En réponse au message Expressions régulières. Évalué à 4.
1. Comme tu veux les deux valeurs autour du =, il est plus logique de ne faire qu’une fois le boulot (une seule fois la même expression régulière).
2. Quand on veut s’arrêter au premier caractère X, l’expression régulière qui précède X se base sur [^X]*, pas sur .*.
Résultat :
File.open('test.txt').each_line do |line|
line.sub!(/[;#].*/, '') # enlever les commentaires de fin de ligne
line.strip! # enlever les espaces en trop
next if line.empty?
if line =~ /\s*([^=\s]*)\s*=\s*([^\s]*)/
name, value = 1,ドル 2ドル
print ".#{name}. == .#{value}.\n"
end
end
La variable value n’est jamais nil car 2ドル peut prendre la chaîne vide.