Отрицание регулярного выражения perl - PullRequest
1 голос
/ 28 июня 2011
my ($INV_NB, $USAGE)=split /\|/,"9998|999999999999999";

if ($USAGE=~/^\d{15}\b/)
{
  print "\nUSAGE is Valid\n";
  print "length of $USAGE is ",length($USAGE);  
}

Это сработало, как и ожидалось, но как я могу отменить это регулярное выражение?скажем, если использование не /^\d{15}\b/

if ($USAGE!=~/^\d{15}\b/)
{
  print "\nUSAGE is Invalid\n";
  print "length of $USAGE is ",length($USAGE);  
}

Я пытался это, но это не работает

Ответы [ 3 ]

5 голосов
/ 28 июня 2011

Вы можете сделать:

if ($USAGE !~ /^\d{15}\b/)

Документация Perl :

Двоичный "! ~" Похож на "= ~", за исключениемвозвращаемое значение отрицается в логическом смысле.

4 голосов
/ 28 июня 2011

Другие ответы верны, но если вы когда-нибудь захотите опровергнуть регулярное выражение (а не оператор, который его применяет), вы можете использовать

/^(?!.*?$regex_to_be_negated)/s
0 голосов
/ 28 июня 2011

Также:

unless ($USAGE=~/^\d{15}\b/)
{
  print "\nUSAGE is Invalid\n";
  print "length of $USAGE is ",length($USAGE);  
}
...