[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?
방법 이 있으면 매운 것 같아요 .