-2
我很困惑爲什麼星號會影響Ruby中的正則表達式結果?示例代碼是下面:星號如何影響Ruby中的表達式?
2.3.0 :001 > "abbcccddddeeeee"[/z*/]
=> ""
2.3.0 :002 > "abbcccddddeeeee"[/z/]
=> nil
爲什麼第一個與*
返回一個空字符串,而另一個返回nil
?
謝謝!
我很困惑爲什麼星號會影響Ruby中的正則表達式結果?示例代碼是下面:星號如何影響Ruby中的表達式?
2.3.0 :001 > "abbcccddddeeeee"[/z*/]
=> ""
2.3.0 :002 > "abbcccddddeeeee"[/z/]
=> nil
爲什麼第一個與*
返回一個空字符串,而另一個返回nil
?
謝謝!
*
是一個量詞,意思是「0或更多」。
您的第一個片段匹配z
的0個實例。您的第二個代碼段與任何內容都不匹配。
Kleene星號表示「零個或多個」。在第一種情況下,字符串中有0,z
秒,這意味着「0或更多z
s」匹配(實際上甚至無限多的匹配)。
在第二種情況下,您搜索不存在的字符串中出現的單個z
。