Что означает специальная переменная perl $-[0] и $+[0]

Я хочу знать значение специальных переменных Perl $-[0] а также $+[0]

Я гуглил и обнаружил, что $- представляет количество строк, оставшихся на странице и $+ представляют последнюю скобку, соответствующую последнему шаблону поиска.

Но мой вопрос в том, что $-[0] а также $+[0] означает в контексте регулярных выражений.

Дайте мне знать, если требуется образец кода.

3 ответа

Решение

Увидеть 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
Другие вопросы по тегам