我正在尝试使用 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 分。”
当循环穿过字符串时,事情变得更加糟糕。条目的开头总是正确的,时间戳包含在子字符串的开头。然而,结局永远不会。