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


Автор: werd 30.7.2008, 11:14
Вопрос такой

1. есть сайт со своим текстовым содержимым (HTML) - качаем файл с сайта и ищем в нём все ссылки,
по формату {http://[^"|'|\s]*}
тоесть с начала ссылки до её конца.

делается так
Код

def get_http(str)
  if str =~ %r{http://[^"|'|\s]*}
    "#{$&}"
  else
    "no match"
  end
end


puts get_http(p) 


при этом получается только один линк, тоесть первый который находит функция.

Мне нужно вытащить все линки с файла,каким образом разумно запустить цикл поиска в строке?

Автор: doomik 30.7.2008, 12:16
Самому когда-то пригодилось:
Код

text = File.readlines(ARGV[0]) # получаем имя файла с командной строки
text = text.join() # получаем одну большую строку
text = text.split(/\"|\'/) # сплит на каждом ' or "
text.each do # для каждого элемента в массиве проверяем 
    |element|
    if element.include?('http://') # если это ссылка
        puts element 
    end
end


Кстати а где подсветка кода на Ruby или её не когда небыло ? O_o

Автор: werd 30.7.2008, 12:30
да вроде нету её тут 

так вот сделал в конце вот так вот
Код

a=  p.scan(%r{http://[^"|'|\s]*}).to_a

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