2012-12-07 7 views
65

Voglio solo sapere se l'espressione regolare di ruby ​​ha un operatore non corrispondente allo !~ in perl. Ritengo scomodo utilizzare (?!xxx) o (?<!xxxx) perché non è possibile utilizzare i modelli di espressioni regolari nella parte xxx.L'espressione regolare di Ruby ha un operatore non corrispondente come "! ~" In Perl?

+0

http://rubular.com – jbearden

+7

Tutto quello che doveva fare era al fuoco fino 'irb' e provarlo. Probabilmente sarebbe stato più veloce di pubblicare una domanda SO. –

+21

Ma non più veloce di googlare "ruby not match" e trovare questa risposta su SO;) – micapam

risposta

123

Sì: !~ funziona bene - probabilmente hai pensato che non lo fosse perché it’s missing from the documentation page of Regexp. Tuttavia, funziona:

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

'! ~' È documentato in [Object] (http://ruby-doc.org/core-2.3.1/Object.html # metodo-i-21-7E). –

1

per quanto ne so (xxx?!) È supportato:

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 
Problemi correlati