星号如何影响Ruby中的表达式?
我很困惑为什么星号会对Ruby中的正则表达式结果产生影响?示例代码如下:星号如何影响Ruby中的表达式?,ruby,regex,asterisk,Ruby,Regex,Asterisk,我很困惑为什么星号会对Ruby中的正则表达式结果产生影响?示例代码如下: 2.3.0 :001 > "abbcccddddeeeee"[/z*/] => "" 2.3.0 :002 > "abbcccddddeeeee"[/z/] => nil 为什么带*的第一个返回空字符串,而另一个返回nil 谢谢 *是一个表示“0或更多”的量词 您的第一个代码段与z的0个实例相匹配。您的第二个代码片段与任何内容都不匹配。Kleene星表示“零或更多”。在第一种情况下,字符串
2.3.0 :001 > "abbcccddddeeeee"[/z*/]
=> ""
2.3.0 :002 > "abbcccddddeeeee"[/z/]
=> nil
为什么带*
的第一个返回空字符串,而另一个返回nil
谢谢
*
是一个表示“0或更多”的量词
您的第一个代码段与z
的0个实例相匹配。您的第二个代码片段与任何内容都不匹配。Kleene星表示“零或更多”。在第一种情况下,字符串中有0z
s,这意味着存在“零个或多个z
s”的匹配(实际上甚至无限多个匹配)
在第二种情况下,搜索字符串中不存在的单个z