Я пытаюсь понять внешний вид.
Этот пример, который я стараюсь, не работает так, как я ожидал. Я хотел, чтобы попытаться сформировать регулярное выражение, которое будет соответствовать John
, но не John.
Следующим:Lookbehind не работает должным образом
$ perl -e '
my $var = "John.";
if($var =~ m/J*/) {
print "Matches!\n";
}
'
Matches!
матчей до и включая .
конечно. Проблема заключается в следующем:
$ perl -e '
my $var = "John.";
if($var =~ m/J*(?<![.])/) {
print "Matches!\n";
}
'
Matches!
Для последнего я ожидал, что регулярное выражение будет соответствовать John.
потребляя>. < (период)
Затем на следующей позиции он будет выглядеть позади и понимать, что он потреблял период (.) И отклонял матч.
Является ли мое понимание неправильным? Что я здесь испортил?
Update:
Тот же результат и для my $var = "John. ";
Update 2:
Мой вопрос не о том, чтобы соответствовать только John
и не John.
Но чтобы понять, как с просмотром назад работает, и если он в этом случае не предполагается работать.
+ 1.Отличное объяснение! Большое спасибо – Jim
@Jim: Кстати, '/ (J. * (? nhahtdh
Кроме того, я бы не сказал, что избежать отскока, а скорее уменьшилось. Я бы сказал, что избежать обратного следования при использовании притяжательных кванторов и атомных групп. – Jerry