我具有由\t
和,
分隔的字符串,但\t
的數目不是固定的,例如:當使用Ruby分割字符串時,/ t + |,/和/ [ t +,] /有什麼區別?
a=["seg1\tseg2\t\tseg3,seg4"]
seg2
並seg3
由兩個\t
分隔。
所以我試圖通過
a.split(/\t+|,/)
分裂他們來說,打印正確的anwser:
["seg1", "seg2", "seg3", "seg4"]
而且我也試試這個
a.split(/[\t+,]/)
但得到的答覆是
["seg1", "seg2", "", "seg3", "seg4"]
爲什麼紅寶石打印不同的結果?
全套需要在[]逃逸字符的是你提到的那些:[] \^plus - (取決於位置) – pguardiario 2012-03-26 07:28:39
正確。有趣的是還要注意'''**不是**在區間之外的特殊字符,只在內部和其他兩個字符之間。除此之外,'^'也可以是特殊的或不依賴於位置(作爲第一個字符,否定間隔;其他地方都是常規字符)。最奇怪的是:']'作爲第一個字符被允許 - '[] x]'匹配「x」或「]」。這是因爲有那麼多的角落案例,我總是懷疑...... – mgibsonbr 2012-03-26 07:46:50
實際上],因爲第一個字符會發出警告,但預計會在ruby正則表達式中轉義,儘管許多其他正則表達式引擎也允許這樣做。 – pguardiario 2012-03-26 11:09:14