0

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

“上午 10:59 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus at tincidunt >ante。上午 3:30 Aenean interdum, quam sed tempor imperdiet, neque turpis aliquet est, at >luctus justo arcu et arcu. Sed sat amet eros a sem hendrerit vestibulum faucibus sit amet >nunc。Nam venenatis pharetra leo vel facilisis。晚上 9:20 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

当我运行它时,开始条目的第一个时间戳被捕获 find。然而,结局永远不会对。

而不是“上午 10:59 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus at tincidunt ante”。我得到“”上午 10:59 Lorem ipsum dolor sit amet,consectetur adipiscing elit。Phasellus 在 tincidunt ante。凌晨 3 点 30 分。”

当循环穿过字符串时,事情变得更加糟糕。条目的开头总是正确的,时间戳包含在子字符串的开头。然而,结局永远不会。

4

1 回答 1

0
text.split(/(\d{1,2}:\d{1,2}\s[ap]\.m\.)/).drop(1).each_slice(2).map(&:join)
于 2013-06-05T04:13:40.197 回答