2017-06-22 70 views
-2

我想用ruby的可變範圍,但我的代碼不工作;紅寶石使用範圍變量?

ruby -e ' input2=145..170 ; input3= input2.to_s.gsub(/(.*?)\.\.(.*?)/) { 5.upto($2.to_i) { |i| print i, " " } }; print input3' > zzmf 

但我獲得5170

這部分失敗:

5.upto($2.to_i) { |i| print i, " " } 

我預計:

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 5170 
+0

,如果你要打印一個範圍,爲什麼不使用這樣的具有rangeStart = 5; rangeEnd = 170; (rangeStart..rangeEnd).each {| i |打印我,「」}? – N3SS4H

+0

我需要從正則表達式提取數據 – alberto2

+0

5從哪裏來?你爲什麼不用145? –

回答

0

我不認爲GSUB是你所需要的,嘗試了比賽下面的例子。 [2]得到從正則表達式/(\d+)..(\d+)/施加到「147..170」

5.upto("147..170".match(/(\d+)\.\.(\d+)/)[2].to_i) { |i| print i, " "} 

GSUB旨在用於字符串替換的第二場比賽。 https://ruby-doc.org/core-2.1.4/String.html#method-i-gsub

0

我看到我的代碼,我在正則表達式

我用這個迷惑。*?

和正確的就是這個。*

(。*)/

ruby -e ' input2=145..170 ; input3= input2.to_s.gsub(/(.*?)\.\.(.*)/) { 5.upto($2.to_i) { |i| print i, " " } }; print input3' > zzmf 

感謝您的答覆