让Star Regex运营商失败

Rya*_*llo 24 ruby regex

我不确定我的大脑是否已经疲惫不堪,或者我是否只是在考虑这个问题.下面的代码是从about_regular_expressions红宝石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  
Run Code Online (Sandbox Code Playgroud)

你如何*在比赛中失败?

当我说失败时,我假设他们的意思是他们想要assert_equal返回.我知道一种方法是\在前面抛出一个*让正则表达式明确地寻找*角色,但我很确定这不是他们所暗示的.

And*_*imm 43

也许"什么时候*不匹配"的答案是"从不".

  • `assert_equal nil,"never"[/ z*/]` - Nope不起作用,仍然说nil应该等于"":P (4认同)
  • 我真的很喜欢这个答案.它很简单,它必须是他们的想法. (2认同)

Jer*_*ock 25

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

  • @Ryan:如果你做了`^ z*$`(或者需要整个字符串匹配的匹配函数),那可能会失败. (2认同)