Я пытаюсь написать метод вытаскивает каждую строку, которая соответствует критериям, из большого текстового файла:Строка вопрос синтаксиса соответствия регулярных выражений
- Каждый элемент отделяется запятой
- Первые 5 элементов может быть любое число от 1-59
- следующие 21 элементы должны быть числами от 1-5
- следующие 27 элементов могут быть либо истинными, либо ложными (без крышки)
- конечные элементы 5 представляют собой целые числа от 1 -5
Мой код:
#this string should be returned by the regex matching
str="3,15,14,31,40,5,5,4,5,3,4,4,5,2,2,2,1,2,1,1,3,3,3,2,4,3,false,false,false,false,false,true,false,true,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,3,3,3,2,3"
matchResult=/[1-59]{5}[1-5]{21}[true|false]{27}[1-5]{5}/.match(str)
matchResult.each{|x| #this doesnt work....why?
puts x
}
- Что такое правильный способ напечатать все матчи?
matchResult.each
вызывает ошибку. Я думал, что он вернул массив матчей. - Как настроить регулярное выражение, чтобы ожидать запятую между каждым значением (а не в конце строки)?
некоторые из моих строк могут иметь запятую в начале. Есть ли способ настроить регулярное выражение для этого? Я попытался: (/^(?: [,] *) (?: [1-5] \ d | [1-9]) (?:, (?: [1-5] \ d | [1-9 ])) {4} (:, [1-5]) {21} (:, (?: истинно | ложно)) {27} (?:?, [1-5]) {5} $ /) но что не работает – Rilcon42
как выглядит ваша строка? –
str = ", 3,15,14,31,40,5,5,4,5,3,4,4,5,2,2,2,1,2,1,1,3,3,3 , 2,4,3, ложь, ложь, ложь, ложь, ложь, истина, ложь, истина, ложь, ложь, ложь, ложь, ложь, ложь, ложь, истина, ложь, ложь, ложь, ложь, ложь, ложь , false, false, false, false, false, 3,3,3,2,3 " – Rilcon42