Ruby正则表达式在Perl中是否有像"!〜"这样的不匹配运算符?

use*_*091 83 ruby regex

我只想知道ruby正则表达式是否与!~perl中的不匹配运算符一样.我觉得使用起来不方便,(?!xxx)或者(?<!xxxx)因为你不能在xxx部件中使用正则表达式.

Kon*_*lph 148

是的:!~工作得很好 - 你可能认为它不会因为它在文档页面中遗漏了Regexp.不过,它有效:

irb(main):001:0> 'x' !~ /x/
=> false
irb(main):002:0> 'x' !~ /y/
=> true
Run Code Online (Sandbox Code Playgroud)

  • `!~`记录在[Object]下(http://ruby-doc.org/core-2.3.1/Object.html#method-i-21-7E). (7认同)
  • 在ruby 2.4中,还有一个更好的语法“ RegExp#match?”,您可以轻松地将其取反。根据[发行说明](https://www.ruby-lang.org/en/news/2016/12/25/ruby-2-4-0-released/),它的分配比`少! 〜` (2认同)

cal*_*hou 7

AFAIK (?!xxx) 支持:

2.1.5 :021 > 'abc1234' =~ /^abc/
 => 0
2.1.5 :022 > 'def1234' =~ /^abc/
 => nil
2.1.5 :023 > 'abc1234' =~ /^(?!abc)/
 => nil
2.1.5 :024 > 'def1234' =~ /^(?!abc)/
 => 0
Run Code Online (Sandbox Code Playgroud)