Альтернатива

Вертикальная черта (|) означает, что совпасть может либо выражение в левой части, либо выражение в правой части. Иначе говоря, если часть шаблона слева от вертикальной черты не совпадает, то в совпадение может быть включена часть справа. Таким образом, выражение /fred|barney|betty/ совпадет в любой строке, в которой встречается слово fred, barney или betty. Теперь вы можете создать шаблон типа /fred( |\t)+barney/, который совпадает, если fred и barney разделяются пробелами, символами табуляции или любой их комбинацией. Знак + означает повторение один или более раз; при каждом повторении подвыражению ( |\t) предоставляется возможность совпасть с пробелом или символом табуляции.

Два имени должны быть разделены, как минимум, одним из этих символов. Если вы хотите, чтобы все символы между fred и barney были одинаковы, запишите шаблон в виде /fred( +|\t+)barney/. В этом случае все разделители должны быть одинаковыми – либо только пробелы, либо только символы табуляции. Шаблон /fred (and|or) barney/ совпадает в любой строке, содержащей любую из двух возможных: fred and barney или fred or barney. Те же две строки можно было искать по шаблону /fred and barney|fred or barney/, но тогда шаблон получается слишком длинным. Вероятно, он к тому же будет менее эффективным – в зависимости от того, какие оптимизации встроены в ядро поддержки регулярных выражений.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Группировка в шаблонах
Инвертированные сокращения
О метасимволах
Простые квантификаторы
Простые регулярные выражения

Вернуться в раздел: Perl / 6. В мире регулярных выражений