2014-01-12 38 views
0

例如,我的字符串是:爲什麼在使用 d *正則表達式分割字符串時會得到一個字符數組?

"this8is8my8string" 

這裏是兩個不同的結果:

2.1.0 :084 > str.split(%r{\d}) 
=> ["this", "is", "my", "string"] 
2.1.0 :085 > str.split(%r{\d*}) 
=> ["t", "h", "i", "s", "i", "s", "m", "y", "s", "t", "r", "i", "n", "g"] 

我不明白爲什麼字符串是由字符分割,如果沒有數字在他們之間。有人可以澄清第二版中發生了什麼嗎?

回答

2

因爲*手段 「零個或多個」 以及:

"this8is8my8string" 
^^ there's 0 or more digits between the t and the h 
    ^^ there's 0 or more digits between the h and the i 
    ^^ there's 0 or more digits between the i and the s 
    ^^ well... you get the point 

你可能尋找+\d+意味着「一個或多個數字」。

此外,在一個稍微相關的主題上:Ruby中的regexen通常被視爲正則表達式文字,如/\d*/,而不是%r格式。當我讀到你的問題時,這實際上讓我感到有些失落;這似乎很奇怪。我建議使用/.../文字格式,以便讓大多數Rubyists更容易閱讀您的代碼。

相關問題