假设一个正则表达式来自当前上下文之外的调用代码,然后被传递给在当前项目之外实现的另一个调用:
["1", "2"].grep(/1/) #=> ["1"]
进行调用时,是否有一种简单的 Rubyish 方式来实现以下行为?
["1", "2"].grep(/1/.negate) #=> ["2"]
此行为类似于=~
用运算符切换运算!~
符。当然,可以使用#select
or #reject
,或者打开或子类化Regexp
。但是我很好奇Ruby中是否已经有一种方法可以以上述方式否定正则表达式返回的匹配项。另外,我不在乎匹配的位置false
是否涉及到实现此效果nil
。true
有一个相关的理论问题,但超出了这里的简单考虑。
编辑:我知道迭代器是在 Ruby 中过滤列表的一般方法,但人们忽略了问题的约束。另外,我认为正则表达式被反转的方式有一些很好的功能。我不认为它过度劳累或过于聪明。它是陈旧的面向对象编程,也是 Ruby 擅长做的事情。