Ruby和Regex Imprecision

时间:2013-06-05 03:59:16

标签: ruby regex rubular

我正在尝试使用Ruby和Regex将一个长字符串分成由整个字符串中出现的时间戳分隔的块。

  

“早上10点59分Lorem ipsum dolor坐下来,精神上的精英。在Tincidunt的阶段性> ante.3:30 am Aenean interdum,quam sed tempor imperdiet,neque turpis aliquet est,at> luctus justo arcu et arcu Sed semet amet eros a sem hendrerit vestibulum faucibus sit amet> nunc.Nam venenatis pharetra leo vel facilisis.9:20 pm Aenean tincidunt ligula lacinia。“

这是我正在运行的循环来拉出每个块。

while text.length > 1
  begin_entry = text.index(/\d{1,2}[:]\d{2}\s(a|p)[.][m][.]/)
  end_entry = text.index(/\d{1,2}[:]\d{2}\s(a|p)[.][m][.]/, begin_entry + 1)
  blot = text.slice!(begin_entry, end_entry)
end

当我运行此命令时,将捕获开始输入的第一个时间戳。但是,结局永远是对的。

而不是“上午10点59分Lorem ipsum dolor坐下来,精神上的精英.Tenleus at tincidunt ante。”我得到了“”早上10:59。Lorem ipsum dolor坐下来,精神上屈服于elit。在tincidunt ante的Phasellus。 3:30 a。“

当循环遍历字符串时,事情变得更加严重。条目的开头始终是正确的,时间戳包含在子字符串的开头。然而,结局永远不会。

1 个答案:

答案 0 :(得分:0)

text.split(/(\d{1,2}:\d{1,2}\s[ap]\.m\.)/).drop(1).each_slice(2).map(&:join)