Ответ 1
Смотрите perldoc perlvar
о @+
и @-
.
$+[0]
- это смещение в строку конца всего совпадения.
$-[0]
- это смещение начала последнего успешного совпадения.
Я хочу знать значение специальных переменных perl $-[0]
и $+[0]
Я искал googled и обнаружил, что $-
представляет количество строк, оставшихся на странице, и $+
представляет последний бит, соответствующий последнему шаблону поиска.
Но мой вопрос в том, что означает $-[0]
и $+[0]
в контексте регулярных выражений.
Сообщите мне, требуется ли образец кода.
Смотрите perldoc perlvar
о @+
и @-
.
$+[0]
- это смещение в строку конца всего совпадения.
$-[0]
- это смещение начала последнего успешного совпадения.
Это оба элемента из массива (обозначаются квадратными скобками и числом), поэтому вы хотите искать @- (массив), а не $- (несвязанная скалярная переменная).
Отклонение
perldoc perlvar
объясняет специальные переменные Perl. Если вы ищете там для @- вы найдете.
$-[0] is the offset of the start of the last successful match. $-[n] is the offset of the start of the substring matched by n-th subpattern, or undef if the subpattern did not match
.
Добавление примера для лучшего понимания $-[0]
, $+[0]
Также добавление информации о переменной $+
use strict;
use warnings;
my $str="This is a Hello World program";
$str=~/Hello/;
local $\="\n"; # Used to separate output
print $-[0]; # $-[0] is the offset of the start of the last successful match.
print $+[0]; # $+[0] is the offset into the string of the end of the entire match.
$str=~/(This)(.*?)Hello(.*?)program/;
print $str;
print $+; # This returns the last bracket result match
Вывод:
D:\perlex>perl perlvar.pl
10 # position of 'H' in str
15 # position where match ends in str
This is a Hello World program
World