Ruby regexp返回""vs nil

H.R*_*iee 5 ruby regex

以下正则表达式语句之间的不同结果背后的原因是什么:

"abbcccddddeeee"[/z*/] # => ""
Run Code Online (Sandbox Code Playgroud)

而这些回归nil:

"some matching content"[/missing/] # => nil
"start end"[/\Aend/] # => nil
Run Code Online (Sandbox Code Playgroud)

dep*_*epa 9

发生了什么事是,/z*/将返回零次或多个出现z.

如果您使用/z+/,返回一个或多个,您将看到它nil按预期返回.


tor*_*o2k 6

正则表达式/z*/匹配0个或更多z字符,因此它还匹配字符串开头的空字符串.考虑一下:

"abbcccddddeeee" =~ /z*/
# => 0
Run Code Online (Sandbox Code Playgroud)

因此String#[]返回匹配的空字符串.

在第二个例子中,表达/missing//\Aend/不匹配任何如此nil返回.