2014-10-31 64 views
0

我正則表達式這樣的東西之間:紅寶石正則表達式兩個短語

hours_and_address_reg = /(?<=<span class="infoTitle">godziny otwarcia: <\/span>).*?(?=<div id="singleOutpostIcons">)/ 

所以我想

<span class="infoTitle">godziny otwarcia: <\/span> 

<div id="singleOutpostIcons">

而且樣本文檔之間的所有文本(我保持它在字符串變量)像這樣:

<span class="infoTitle">godziny otwarcia: </span> 
     pn-pt: <span class="openHours">9.00-17.00</span><br/> 
       so: <span class="openHours">zamkni&#x119;te</span><br/> 
       nd: <span class="openHours">zamkni&#x119;te</span><br/> 

     <span class="infoTitle">obs&#x142;uga kasowa: </span> 
     pn-pt: <span class="openHours"> 09:00-17:00</span><br/> 
       so: <span class="openHours"> -</span><br/> 
       nd: <span class="openHours"> -</span><br/> 


    <hr class="break-line"> 

    <div id="singleOutpostIcons"> 

問題是什麼? 此正則表達式是正確的,我檢查了它的http://rubular.com/

但行

hours_and_address = hours_and_address_reg.match(address_and_hours_box).to_s 
    puts hours_and_address 

放什麼。

也許問題是斷線?

+0

你能提供一個你想要的結果的例子嗎? – dramixx 2014-10-31 10:40:14

+0

[解析Html The Cthulhu Way](http://blog.codinghorror.com/parsing-html-the-cthulhu-way/) – Stefan 2014-10-31 10:41:56

+1

使用's'或'DOTALL'標誌 – vks 2014-10-31 10:46:08

回答

0

我解決了這個問題。 Ruby的解決方案:

hours_and_address_reg = Regexp.new('(?<=<span class="infoTitle">godziny otwarcia: <\/span>).*?(?=<div id="singleOutpostIcons">)', Regexp::MULTILINE)