Perl регулярка и позиция в строке

Тема в разделе "WASM.HEAP", создана пользователем Rustem, 11 сен 2010.

  1. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Приветствую
    Вопрос такой: если передать строку для поиска регулярке , можно ли узнать позицию найденной подстроки в исходной строке?
    Может в переменной какой сохраняется?
     
  2. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    (не проверял. нет развернутого перла)

    $` - подстрока до
    $& - найденная подстрока
    $' - подстрока после

    $[ - индекс первого сим в подстроке
     
  3. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    qqwe спасибо
    первые 3 работают. последний 0 возвращает
    Код (Text):
    1. $src = "1111 fff 22 fff ggg ggfffzzzzzzzzz";
    2. while($src =~ m/fff/g){
    3. print "1=>".$`."\n";
    4. print "2=>".$&."\n";
    5. print "3=>".$'."\n";
    6. print "4=>".$[."\n";
    7. }
    8. exit;
     
  4. left_hand

    left_hand New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2010
    Сообщения:
    12
    Rustem

    $[ - не то это что Вам надо, эта переменная определяет оффсет индексации элементов, если Вы например захотите чтоб индексация шла у вас не с 0 а с 1 (как в awk), или вообще с 2.

    вот что Вам надо:
    $-[0] is the offset of the start of the last successful match.

    в целом настоятельно советую изучить `perldoc perlvar` страницу документации и ознакомиться с тем какие встроенные переменные имеются в perl. их не так много, но их знание очень облегчает жизнь перл-кодера.