我只想知道 ruby 正则表达式是否像!~
perl 中那样有一个不匹配运算符。我觉得使用起来很不方便,(?!xxx)
或者(?<!xxxx)
因为您不能在xxx
零件中使用正则表达式模式。
问问题
48876 次
3 回答
178
是的:!~
工作得很好——你可能认为它不会,因为它在Regexp
. 尽管如此,它仍然有效:
irb(main):001:0> 'x' !~ /x/
=> false
irb(main):002:0> 'x' !~ /y/
=> true
于 2012-12-07T08:04:50.737 回答
6
支持 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
于 2015-02-06T03:04:17.037 回答
-1
回到 perl,'foobar' !~ /bar/
测试字符串不包含“bar”是完全错误的。
在 Ruby 中,尤其是现代风格指南,我认为更明确的解决方案更传统且易于理解:
input = 'foobar'
do_something unless input.match?(/bar/)
needs_bar = !input.match?(/bar/)
也就是说,我认为如果有一种.no_match?
方法会很漂亮。
于 2020-09-04T14:21:46.067 回答