The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
perl: затык с регэкспом, !*! reekoff, 30-Июн-11, 00:26  [смотреть все]
  • perl: затык с регэкспом, !*! gibbon, 02:46 , 30-Июн-11 (1)
    >[оверквотинг удален]
    >     #!/usr/bin/perl
    >     $_ = 'qwerty';
    >     if ($_ =~ /   (([^e]|e)*)  
    >   /x) { print "$1\n" };
    > Я ожидаю, что совпадет первая альтернатива в позиции строки до "e", как
    > и в первом случае.
    > Но совпадает вся строка - в $1 имеем qwerty.
    > Может я затупил конкретно или не понимаю сути... в общем, не могу
    > разобраться в поведении этого выражения.
    > Разъясните, что к чему, если не сложно...

    Как-то у вас все запутною Зачем писать такие регэкспы?

    А работают они так как и должны.
    Первый вариант.
    Здесь вы в сущности ищите подстроку состоящую из не 'e' или из 't'.
    Регэксп просматривает вашу строку qwerty слева направо.
    Итак, первая буква 'q' это не 'e', она попадает в группу и продолжается просмотр.
    Вторя буква 'w', это тоже не 'e' и она попадает в группу и продолжается просмотр.
    Третья буква 'e', под условие не 'e' она не попадает, не попадает она и под альтернативную 't', так что на этом просмотр заканчивается и в группе итого 'qw'.
    Регэксп ищет первое совпадение с шаблоном и на этом останавливается.

    Второй вариант.
    Здесь в регэкспе ([^e]|e) это все что не 'e' или 'e'. В сущности под это попадают все символы. Можно было записать там просто точку.
    Регэксп просматривает все символы строку 'qwerty' и они все подходят под ваше условие. В итоге в группе оказывается вся строка 'qwerty'.

  • perl: затык с регэкспом, !*! cryo, 04:09 , 30-Июн-11 (2)
  • perl: затык с регэкспом, !*! Pahanivo, 07:12 , 30-Июн-11 (3)
  • perl: затык с регэкспом, !*! reekoff, 18:07 , 01-Июл-11 (12)



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру