我想獲得一個字符串並將它分割成一個數組僅當它的格式是有效的紅寶石/正則表達式語法分析字符串
有效格式的字符串包括:
key: Bob value: 5000
key: Jane value: 6000,700,100
無效格式,除了key:
或value:
被拼錯了:
key: Bob value: 6000,,,,100
我一直在使用gets
取得一行並試圖使用此代碼:
if line =~ /key:\s\d+\svalue:\s([\d+]+,?)*/
# do stuff
end
我使用===
也試過,但都只是返回true /不爲零有效和無效的字符串。我怎樣才能確保多個連續的逗號被認爲是無效的?
好奇:爲什麼^ $造成如此大的差異? – Klnkmnk
他們強制正則表達式跨越整個輸入字符串... http://www.regular-expressions.info/anchors.html – sweaver2112
'^'和'$'並不意味着在Ruby中字符串的開始/結尾,它們意味着*行*的開始/結束。你幾乎總是想在Ruby中使用'\ A'和'\ z'。 –