Ruby Regexp负向后看被忽略?

Ruby Regexp负向后看被忽略?,ruby,regex,Ruby,Regex,在Ruby 2.0 Regexp中,我希望有人能够解释我的错误: 这种积极的态度是正确的: "seacow hotdog".scan(/(?<=hot)(cow|dog)/) # => [["dog"]] “海牛热狗”。扫描(/(?[[“狗”]] 这种消极的背后观感不起作用: "seacow hotdog".scan(/(?<!=hot)(cow|dog)/) # => [["cow"], ["dog"]] - INCORRECT “海牛热狗”。扫描(/(?[“牛

在Ruby 2.0 Regexp中,我希望有人能够解释我的错误:

这种积极的态度是正确的:

"seacow hotdog".scan(/(?<=hot)(cow|dog)/) # => [["dog"]]
“海牛热狗”。扫描(/(?[[“狗”]]
这种消极的背后观感不起作用:

"seacow hotdog".scan(/(?<!=hot)(cow|dog)/)  # => [["cow"], ["dog"]] - INCORRECT
“海牛热狗”。扫描(/(?[“牛”],[“狗”])-不正确
为什么?

您正在寻找
=hot
作为文本字符串


参见演示

文档非常清楚地介绍了
?:“
(?-反向查找断言:确保前面的字符与pat不匹配,但在匹配的文本中不包括这些字符”谢谢。非常感谢。@Ross-很高兴听到。您还需要什么吗,或者这是否回答了您的问题?
"seacow hotdog".scan(/(?<!=hot)(cow|dog)/)
                          ^
"seacow hotdog".scan(/(?<!hot)(cow|dog)/)