Ruby - regex

W jaki najprostszy sposób można zrobić taka rzecz - usunąć ze stringa znaki ktore nie pasuja do danego regex-a

Np.

‘string-string’.metoda(/^[a-z_0-9]+$/)

chodzi o to zeby zostały tylko znaki pasujące do regex-a /^[a-z_0-9]+$/, wszystko inne zostało usunięte

'string-string'.gsub(/[^a-z_0-9]/,"")

przy założeniu, że chodzi Ci o pojedyncze znaki. Jeśli chcesz, żeby było to bardziej skomplikowane zapytanie, to zrobiłbym to tak:

result = "" 'string-string'.scan(/jakies-zapytanie/){|str| result << str }
Wtedy result będzie zawierał to na czym Ci zależy.

jako regexp podajesz /[^a-z_0-9]+/
daszek (^) umieszczony na początku w [] oznacza negację, czyli dopasowuje wszystkie znaki poza wymienionymi.
Całość może wyglądać tak:

"string".gsub(/[^a-z0-9_]/,'')

O, widzę, że ktoś już mnie ubiegł :wink: