Witam.
Mam na przykład zmienną z wyrażenia regularnego.
Zawarty w niej jest ciąg znaków składający się z dużych liter, małych liter,
spacji i innych znaków typu: 0, x, % itd.
Oprócz tego mam tablicę ze słowami: roza, fiolek.
Jak sprawdzić czy zmienna nie zawiera słów z tablicy?
Jest na to jakiś sposób? Bo kminię od wczoraj i coś nie chce działać jak powinno.
Pojedyncze sprawdzenie(możesz sprawdzać dla każdego słowa)
reg = Regexp.new("roza")
=> /roza/
"tu jest roza" =~ reg
=> 8
ew. możesz jeszcze zrobić jedno duże wyrażenie
words = %w{roza tulipan fiolek}
reg = Regexp.new words.join("|")
=> /roza|tulipan|fiolek/
Powinno działać
Odchodząc nieco od założenia, że lista słów składa się wyłącznie z ciągów znaków alfanumerycznych, warto jest pamiętać o ich prawidłowym zabezpieczeniu przed parsowaniem metaznaków wyrażenia regularnego:
words = %w{roz|a tulip?an fio-+lek}
reg = Regexp.new words.map{|word| Regexp.escape word}.join("|")
=> rozatulipanfio-lek
reg.source
=> "roz\\|a|tulip\\?an|fio\\-\\+lek"
Dzięki chłopaki.