Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 让starregex操作符失败_Ruby_Regex - Fatal编程技术网

Ruby 让starregex操作符失败

Ruby 让starregex操作符失败,ruby,regex,Ruby,Regex,我不确定我的大脑是否已经精疲力竭,或者我只是想得太多了。以下代码来自Ruby Koans中关于正则表达式的 def test_asterisk_means_zero_or_more assert_equal "abb", "abbcccddddeeeee"[/ab*/] assert_equal "a", "abbcccddddeeeee"[/az*/] assert_equal "", "abbcccddddeeeee"[/z*/] # THINK ABOUT

我不确定我的大脑是否已经精疲力竭,或者我只是想得太多了。以下代码来自Ruby Koans中关于正则表达式的

def test_asterisk_means_zero_or_more
   assert_equal "abb", "abbcccddddeeeee"[/ab*/]  
   assert_equal "a", "abbcccddddeeeee"[/az*/]  
   assert_equal "", "abbcccddddeeeee"[/z*/]  

 # THINK ABOUT IT:
 #
 # When would * fail to match?
end  
如何使
*
匹配失败


当我说失败时,我假设他们的意思是希望
assert_equal
返回nil。我知道一种方法是在
*
前面抛出一个
\
,让正则表达式显式地查找
*
字符,但我很确定这不是他们的意思。

因为
*
将始终接受空字符串,只有在前后有不匹配的内容时才会失败。例如,
ab*c
将无法匹配
azc
,因为
b*
将无法匹配
z
c
将无法匹配
zc

也许“何时会*无法匹配”的答案是“从不”。

断言等于零,“abbcdddeeee”[/zc*//code>


z不匹配,所以c*不匹配。修改选项直到
assert\u equal nil
通过。

我也这么认为,但问题在最后一次assert\u equal之后立即出现的方式让我认为它们严格地指的是
z*
案例。也许我只是在给自己制造麻烦。@Ryan:如果你做了
^z*$
(或者需要匹配整个字符串的匹配函数),那可能会失败。谢谢!我想得太多了,我想确定我没有遗漏任何东西。你证实了我的怀疑。事实上我更喜欢这个答案。它是如此简单,以至于它必须是他们所想的。
断言等于nil,“从不”[/z*/]
--不,仍然说nil应该等于“”:P