Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Регулярка


Автор: GrayCardinal 29.8.2008, 09:22
День добрый !
Первую неделю изучаю руби, возникла проблема с регуляркой. Т.е. регулярка правильная, но перл-стайл :( Короче не работает smile

Код

#!/usr/bin/ruby

class Main
    def initialize
        loadFile
    end

    def loadFile
        @data = File.read("/home/oleg/statistiken.php.html")
        reg = Regexp.compile("\<td class=\"s7\"><a href=.*?\">(.*?)<\/a><\/td>")
        match = reg.match(@data)
        match
    end

end

m = Main.new


match[1] выдает имя одного хлопца (первые скобки с вопросом в регулярке). Однако таких строчек там 20 штук. Как получить имена остальных хлопцев ? Т.е. совпадений должно быть больше одного.

Заранее спасибо...

Автор: GrayCardinal 29.8.2008, 09:42
Временное решение - разбил на массив и выполнил для каждой строчки. Может можно по другому ?

Автор: shine 29.8.2008, 09:58
Цитата(GrayCardinal @ 29.8.2008,  09:42)
Временное решение - разбил на массив и выполнил для каждой строчки. Может можно по другому ?

Конечно есть. У строк есть метод scan который принимает на входе регулярное выражение и выдает массив соответствий этому регвыр внутри строки.

Код

matches = @data.scan(/regexp/)

Автор: GrayCardinal 29.8.2008, 10:23
shine, 
Благодарю, очень помог !

Добавлено через 11 минут и 30 секунд
Хм. А как сделать чтобы точке конец строки соответствовал ?

Автор: GrayCardinal 29.8.2008, 10:46
Всё, догнал. /m добавить надо было. Еще раз спасибо smile Сабж закрыт.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)