2013-06-05 3 views
0

1'm пытается использовать рубин и Regex разделить длинную строку на куски, разделенных временными метками, которые происходят по всей строке.рубин и Regex неточностей

«10:59 утра Lorem Ipsum морковь, экологический томатный суп. Застройщики в ид> раньше. Jasmine 3:30 утра иногда, но к тому времени финансирование не бананы, а> горе только лук алкоголь. однако, много арахисового салат Бюро производства горла морковь> Теперь. Для стерилизованного колчана льва или дорогой. 9:20 вечер жасмина tincidunt юбки. "

Вот 1'm контур работает, чтобы вытащить каждый кусок.

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 

1 Когда этот запуск, первая запись захватывается метку времени, чтобы начать находку. Тем не менее, конец никогда прав.

Вместо "10:59 часов вечера Lorem Ipsum моркови, повышение магистранта разработчика. Phasellus на разработчиках." Получите 1 «» 10:59 часов вечера Lorem Ipsum боль сидеть Амет, consectetur adipiscing Элит. Лодка на разработчиках. 3:30 а. «

И все становится еще больше от как цикл проходит через строку. Начало записи всегда корректно с временной метка включена в начале подстроки. Конец никогда, однако.

ответ

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

спасибо, что работает. Но 1'm интересно, почему попытка не работает? – acdanger

Смежные вопросы