Ruby正则表达式 - 两个短语之间的东西

时间:2014-10-31 10:35:48

标签: ruby regex

我有这样的正则表达式:

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

所以我希望得到

之间的所有文字
<span class="infoTitle">godziny otwarcia: <\/span>

<div id="singleOutpostIcons">

示例文档(我将它保存在String变量中),如下所示:

<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 
什么都没有。

也许问题是断线?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。 Ruby的解决方案:

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