/ / Jak mogę dołączyć zmienną do dopasowanego wyrażenia regularnego w Perlu i sprawdzić, czy zmienna NIE jest w ciągu? - wyrażenie regularne, ciąg, perl, zmienne, dopasowanie

Jak mogę dołączyć zmienną w dopasowaniu do wyrażenia regularnego w Perlu i sprawdzić, czy zmienna NIE jest w ciągu znaków? - regex, string, perl, variables, match

Chciałbym zawrzeć zmienną w regularnym wyrażeniu dopasowania w Perlu i sprawdzić, czy zmienna NIE jest w ciągu.

Połączenie tutaj instruuje, jak dołączyć zmienną, ale mam trudności z testowaniem, czy zmienna NIE jest dopasowana. Jasne, mógłbym po prostu zanegować warunek taki, jak ten:

if (!($string =~ m/$Myvar/)) {
# Do some code here
}

Ale jestem pewien, że musi istnieć sposób na dopasowanie wyrażenia regularnego. Jakieś pomysły?

Z góry dziękuję za pomoc.

Odpowiedzi:

8 dla odpowiedzi № 1

Użyj !~ operator.

if ($string !~ m/$Myvar/) {
# Do some code here
}

Albo użyj index i całkowicie unikać silnika wyrażeń regularnych. To zadziała, nawet jeśli $Myvar ma znaki traktowane specjalnie przez silnik wyrażeń regularnych.

if ( index($string, $Myvar) < 0 ) {
# Do some code here
}

2 dla odpowiedzi nr 2

Co jest złego w negowaniu wyniku?

„Negatywne dopasowanie” (wymagające negatywnego antycypacja z wyprzedzeniem) sprawia, że ​​wyrażenie regularne jest znacznie bardziej skomplikowane:

if ($string =~ m/^(?!.*$Myvar)/s) {
# Do some code here
}