Presentazione + Problema su match stringhe

Ho provato a modificare il mio codice
così:
print “Stringa da cercare:\n”
stringa = gets.chomp!.to_s
puts “stringa->” + stringa + “\n”
matching_lines = *open(‘prova.txt’, ‘r’).select { |l| l.match /stringa/
}
if matching_lines != nil
matching_lines.each{|x| print x, “\n”}
else
puts “Nessuna corrispondenza trovata!”
end

solo che la parte del regular expression non funziona non riesco a
fargli “capire” il mio pattern

grazie ancora!

Ho provato a modificare il mio codice così:

print “Stringa da cercare:\n”
stringa = gets.chomp!.to_s
puts “stringa->” + stringa + “\n”
matching_lines = *open(‘prova.txt’, ‘r’).select { |l| l.match /stringa/
}

Prova:

matching_lines = *open(‘prova.txt’, ‘r’).select { |l| l.include? stringa
}

Include torna true se la stringa contiene l’altra stringa.

non ho provato ma forse al posto del select potresti usare String#scan

qualcosa tipo:
matching_lines = contenuto_del_file.scan /^.stringa.$/ #=> array
delle righe che matchano

non so se è quello il problema, sono troppo pigro per provare :slight_smile:
Paolo

On Feb 13, 2008 2:50 PM, haltman [email protected] wrote:

solo che la parte del regular expression non funziona non riesco a fargli “capire” il mio pattern

grazie ancora!


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Paolo D.’
SeeSaw | Intuitive web stuff

[email protected]
personal http://paolodona.blogspot.com

Io farei
così:
matching_lines = File.readlines(filename) {|l| l.match(/stringa/)}

Oops, mancava il select:

matching_lines = File.readlines(filename).select {|l| l.match(/
stringa/)}

Il giorno 13/feb/08, alle ore 15:27, Giovanni I. ha scritto:

haltman wrote:

Ho provato a modificare il mio codice
cos�:
print “Stringa da cercare:\n”
stringa = gets.chomp!.to_s
puts “stringa->” + stringa + “\n”
matching_lines = *open(‘prova.txt’, ‘r’).select { |l| l.match /stringa/
}
if matching_lines != nil
matching_lines.each{|x| print x, “\n”}
else
puts “Nessuna corrispondenza trovata!”
end

solo che la parte del regular expression non funziona non riesco a
fargli “capire” il mio pattern

grazie ancora!

Come suggeriva Stefano, sostituisci il

l.match /stringa/

con

l.match Regexp.new(stringa)

Ho provato a modificare il mio codice
cos�:
print “Stringa da cercare:\n”
stringa = gets.chomp!.to_s
puts “stringa->” + stringa + “\n”
matching_lines = *open(‘prova.txt’, ‘r’).select { |l| l.match /stringa/
}

funziona anche

matching_lines = *open(‘prova.txt’, ‘r’).select { |l| l.match stringa }

senza gli slash

Ultimo aggiornamento:

Sono riuscito a fare funzionare il codice cosi’:

matching_lines = *open(‘prova.txt’, ‘r’).select { |l| l.match
Regexp.new(stringa)}

perchè mettendo l.match /stringa/ il codice non mi interpreta la mia
variabile come stringa da passare nel pattern.

ciao e grazie ancora a tutti!!