2012-12-07 10 views
65

Chcę tylko wiedzieć, czy regex ruby ​​ma operatora niezgodnego, tak jak !~ w perlu. Używanie (?!xxx) lub (?<!xxxx) jest niewygodne, ponieważ nie można używać wzorów regex w części xxx.Czy wyrażenie regularne Rubin ma operator niepasujący jak "! ~" W Perlu?

+0

http://rubular.com – jbearden

+7

Wszystko co musiałem zrobić, to odpalić 'irb' i spróbować. Prawdopodobnie byłby szybszy niż wysłanie pytania SO. –

+21

Ale nie szybciej niż google "ruby nie pasują" i znajdując tę ​​odpowiedź na SO;) – micapam

Odpowiedz

123

Tak: !~ działa dobrze - prawdopodobnie myślałeś, że nie, ponieważ it’s missing from the documentation page of Regexp. Niemniej jednak, to działa:

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

'! ~' Jest udokumentowane w [Object] (http://ruby-doc.org/core-2.3.1/Object.html # method-i-21-7E). –

1

AFAIK (xxx?!) Jest obsługiwany:

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