2016-03-07 25 views
-2

我很困惑爲什麼星號會影響Ruby中的正則表達式結果?示例代碼是下面:星號如何影響Ruby中的表達式?

2.3.0 :001 > "abbcccddddeeeee"[/z*/] 
=> "" 
2.3.0 :002 > "abbcccddddeeeee"[/z/] 
=> nil 

爲什麼第一個與*返回一個空字符串,而另一個返回nil

謝謝!

回答

1

*是一個量詞,意思是「0或更多」。

您的第一個片段匹配z的0個實例。您的第二個代碼段與任何內容都不匹配。

0

Kleene星號表示「零個或多個」。在第一種情況下,字符串中有0,z秒,這意味着「0或更多z s」匹配(實際上甚至無限多的匹配)。

在第二種情況下,您搜索不存在的字符串中出現的單個z