Забудьте мое предыдущее сообщение, я получил лучшее представление.
sub match_positions {
my ($regex, $string) = @_;
return if not $string =~ /$regex/;
return ($-[0], $+[0]);
}
sub match_all_positions {
my ($regex, $string) = @_;
my @ret;
while ($string =~ /$regex/g) {
push @ret, [ $-[0], $+[0] ];
}
return @ret
}
Эта техника не изменяет regex всегда.
Отредактированный для добавления: заключить в кавычки из perlvar на 1$.. 9$. "Эти переменные все только для чтения и динамично ограниченные по объему к текущему БЛОКУ". Другими словами, если Вы хотите использовать 1$.. 9$, Вы не можете использовать подпрограмму, чтобы сделать соответствие.
РЕДАКТИРОВАТЬ: Я нашел статью на CodeProject с образцом кода, который показывает, как именно это сделать!
Я полагаю, вы уже нашли этот KB , где показано, как это сделать с помощью собственного кода. Я тоже ищу способ C #.
Я тщетно пытался это найти. В конце концов, я сделал это таким образом, чтобы упаковать исполняемый файл NTRights вместе с моим приложением, а затем запустить его как отдельный процесс.
NTRights можно найти на ресурсе kti сервера 2003, и его использование описано здесь: http://support.microsoft.com/kb/315276