haltman
1
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!
haltman
2
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.
haltman
3
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 
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
haltman
4
Io farei
così:
matching_lines = File.readlines(filename) {|l| l.match(/stringa/)}
haltman
5
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
6
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)
haltman
7
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
haltman
8
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!!