I die Elemente arr
in einen String mit einem Zwischenraum zwischen jedem Element verbunden sind, abgetastet dann die Zeichenfolge, um die Ergebnisse zu drei Einfang Gruppen speichern, welches ein Array erzeugte, das zwei Drei-Elemente-Arrays enthielt. Schließlich fügte ich die drei Elemente jedes der beiden Arrays hinzu und druckte das Ergebnis unter Verwendung von puts
.
r =/
(\d+\.\d+) # match a float in capture group 1
.+? # match > 1 of any characters, lazily (?)
(\d{1,2}:\d2) # match the time in capture group 2
.+? # match > 1 of any characters, lazily (?)
(test\s\d+) # match 'test' followed by > 1 digits in capture group 3
/x # free-spacing regex definition mode
puts arr.join(' ').scan(r).map { |a| a.join(" ") }
druckt
0.5 11:02 test 1
0.75 11:02 test 2
Die drei Schritte sind wie folgt.
a = arr.join(' ')
#=> "0.5 2016-08-25 11:02:00 +0530 test 1 0.75 2016-08-25 11:02:00 +0530 test 2"
b = a.scan(r)
#=> [["0.5", "11:02", "test 1"],
# ["0.75", "11:02", "test 2"]]
c = b.map { |a| a.join(" ") }
#=> ["0.5 11:02 test 1", "0.75 11:02 test 2"]
Dann puts c
druckt das oben gezeigte Ergebnis.