Я пытаюсь реализовать это в небольшом скрипте ruby и протестировал его на http://www.rubular.com/,, где он работал отлично.Не уверен, почему он не работает в реальном сценарии.
RegEx: / (движение | ссылки | звук | кнопка | символ) | (0. \ d {8}) | (\ s \ d {1} \ s) | (\ d {10} \ s) /
Текст, против которого он выступает:
Идентификатор испытания: 1 |Тип испытания: движение |Trick?1 Время щелчка: 0,87913100 1302969732
Идентификатор пробной версии: 7 |Тип испытания: кнопка |Trick?0 Время щелчка: 0,19817800 1302987043
и т. Д.и т. д.
То, что я пытаюсь схватить: Только цифры и одно слово после «Тип испытания».Поэтому для первой строки примера я бы хотел, чтобы возвращалось только «1 движение 1 0,87913100 1302969732».Я также хочу оставить пробел перед первым числом в каждом испытании.
Мой короткий скрипт ruby :
File.open('log.txt', 'r') do |file|
contents = file.readlines.to_s
regex = Regexp.new(/(motion|links|sound|button|symbol)|(0\.\d{8})|(\s\d{1}\s)|(\d{10}\s)/)
matchdata = regex.match(contents).to_a
matchdata.each do |match|
if match != nil
puts match
end
end
end
Он выводит только два "1", хотя,Хм ... Я знаю, что он правильно читает содержимое файла, и когда я попробовал альтернативное регулярное выражение, он работал нормально.
Спасибо за любую помощь, которую я получил здесь !!:)