我正在尝试使用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。“
当循环遍历字符串时,事情变得更加严重。条目的开头始终是正确的,时间戳包含在子字符串的开头。然而,结局永远不会。
答案 0 :(得分:0)
text.split(/(\d{1,2}:\d{1,2}\s[ap]\.m\.)/).drop(1).each_slice(2).map(&:join)