我只想知道ruby regex是否有像perl中的!~
那样的非匹配运算符。我觉得使用(?!xxx)
或(?<!xxxx)
不方便,因为您不能在xxx
部分中使用正则表达式模式。
发布于 2012-12-07 16:04:51
是的:!~
运行得很好--你可能认为它不会,因为it’s missing from the documentation page of Regexp
。尽管如此,它仍然有效:
irb(main):001:0> 'x' !~ /x/
=> false
irb(main):002:0> 'x' !~ /y/
=> true
发布于 2015-02-06 11:04:17
支持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
发布于 2020-09-04 22:21:46
回到Perl语言中,'foobar' !~ /bar/
非常适合测试字符串是否包含"bar“。
在Ruby中,尤其是在现代风格指南中,我认为更明确的解决方案更传统,更容易理解:
input = 'foobar'
do_something unless input.match?(/bar/)
needs_bar = !input.match?(/bar/)
也就是说,我认为如果有一个.no_match?
方法就很棒了。
https://stackoverflow.com/questions/13759091
复制相似问题