对于带有否定词的正则表达感到困惑

时间:2016-01-01 19:03:37

标签: ruby regex

我正在使用正则表达式,这个工作断言对我来说没有意义:

assert_equal " = ", "variable_1 = 42"[/\W+/]

在我看来,答案应该是= 42

执行/\w+/会给variable_1。你否定了这一点,你留下了= 42。在只有42的字符串中,执行/w+/并不会删除它,所以我不明白为什么它会从我的示例中的字符串中删除。

编辑:我不想让人混淆。如果/\w+/排在第一位,那么42也会提供42,而在我$ pacman -Qs | grep "alsa" 的例子中,它实际上会将其删除。

以下答案链接到这里有助于: http://rubular.com/

1 个答案:

答案 0 :(得分:4)

请注意\W+匹配一个或多个非字字符([A-Za-z0-9_]除外),因此,匹配的值为 = ,而不是= 42(请参阅{{ 3}})。

assert_equal中,您不会替换,但匹配非单词字符的单个子字符串。请参阅IDEONE demo

请参阅this regex demo

  

如果提供了Regexp,则会返回字符串的匹配部分