[ruby] Ruby 정규식에 Perl에서 “! ~”와 같은 일치하지 않는 연산자가 있습니까?

루비 정규식 !~에 펄 과 마찬가지로 일치하지 않는 연산자가 있는지 알고 싶습니다 . 사용 하기 불편 (?!xxx)하거나 부분 (?<!xxxx)에서 정규식 패턴을 사용할 수 없기 때문에 불편하다고 느낍니다 xxx.



답변

예 : !~잘 작동합니다 . 의 문서 페이지에서 누락Regexp 되었기 때문에 그렇지 않을 것이라고 생각했을 것 입니다 . 그럼에도 불구하고 작동합니다.

irb(main):001:0> 'x' !~ /x/
=> false
irb(main):002:0> 'x' !~ /y/
=> true


답변

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


답변

Perl 'foobar' !~ /bar/로 돌아와서 문자열에 “bar”가 포함되어 있지 않은지 테스트하는 것이 완벽했습니다.

Ruby에서는 특히 현대적인 스타일 가이드를 사용하면보다 명시적인 솔루션이 더 일반적이고 이해하기 쉽다고 생각합니다.

input = 'foobar'

do_something unless input.match?(/bar/)

needs_bar = !input.match?(/bar/)

즉, .no_match?방법 이 있으면 매운 것 같아요 .


답변