Регулярные выражения Perl, конечно же, называются регулярными выражениями Perl или кратными регулярными выражениями. Их также можно назвать шаблонами или правилами. Но что они есть, или не менее может быть, is recursive descent parsers. Они реализованы с использованием рекурсивного backtracker, хотя вы можете поменять местами DFA engine, если вы предпочитаете разгружать DFA-разрешимые задачи.
Вот некоторые важные цитаты по этим вопросам, со всеми ободрение - и часть текста :) - шахтной:
Вы определяете образец, создавая регулярное выражение (или регулярное выражение) , и движок регулярных выражений Perl («Двигатель», для остальной части этой главы ), затем принимает это выражение и определяет, соответствует ли (и как) шаблон вашим данным. Хотя большинство ваших данных, вероятно, будут текстовых строк, вам нечего останавливать использование регулярных выражений для поиска и заменить любую последовательность байтов, даже то, что вы обычно считаете «двоичными» данными. Для Perl байты просто символы, которые происходят, чтобы иметь порядковое значение меньше, чем 256.
Если вы знакомы с регулярными выражениями из какого-то другого места, мы должен предупредить вас, что регулярные выражения немного отличаются в Perl. Во-первых, они не совсем «правильные» в теоретическом смысле слова , что означает, что они могут делать гораздо больше, чем традиционные регулярные выражения, преподаваемые в классах информатики. Во-вторых, они так часто используются в Perl , что у них есть свои специальные переменные, операторы, и котировочные соглашения, которые тесно интегрированы в язык, не просто болтаются как любая другая библиотека.
- Programming Perl, Ларри Уолл, Том Кристиансен и Джон Orwant
Это Апокалипсис на шаблон Matching, как правило, имеющие отношение к , что мы называем «регулярные выражения», которые только незначительно связан с реальными регулярными выражениями. Тем не менее, этот термин вырос с возможностями наших моделей, совместимых с шаблонами, поэтому я не буду пытаться использовать здесь . Я, однако, обычно называю их «regexes» (или «regexen», когда я нахожусь в англосаксонском настроении).
- Perl6 Apocalypse 5: Pattern Matching, Ларри Уолл
Там много нового синтаксиса там, так что давайте шаг через него медленно, начиная с:
$file = rx/^<$hunk>* $ /;
Этот оператор создает объект шаблона. Или, как известно в Perl 6, правило « ». Люди, вероятно, до сих пор называют их «регулярные выражения» или « регулярных выражений» тоже (и ключевое слово rx
отражает), но модели Perl давно назад перестал быть что-то вроде «регулярный», поэтому мы будем пытаться избежать этих сроки.
[Обновить: Мы воскресили термин «регулярное выражение», чтобы ссылаться на эти шаблоны в вообще. Когда мы говорим «правило» сейчас, мы специально ссылаемся на вид регулярного выражения, который вы будете использовать в грамматике. См S05]
-. Perl6 Exegesis 5: Pattern Matching, Дамиан Конвей
Этот документ суммирует Апокалипсис 5, который о новом регулярное выражение синтаксиса. Попытаемся теперь называть их регулярное выражение, а не «регулярные выражения», потому что они не были регулярными выражениями в течение длительного времени, и мы считаем, что популярный термин «регулярное выражение» находится в процессе становления технический термин с точный смысл: «что-то, что вы делаете с шаблоном, похожее на обычное выражение ». С другой стороны, одна из целей редизайна состоит в том, чтобы сделать части наших шаблонов более поддающимися анализу под традиционной классической семантикой регулярного выражения и анализатора, которая включает в себя , делая тщательные различия между частями наших шаблонов и грамматиками должны рассматриваться как декларативные, а какие - процедурные.
В любом случае, когда речь идет о рекурсивных моделях в грамматике, то термины правила и маркер, как правило, предпочтительны более регулярного выражения.
- Perl6 Synopsis 5: Regexes and Rules, Дамиан Конвей, Эллисон Рэндал, Патрик Мишо, Ларри Уолл, и Moritz Ленца
PCRE никогда не был полностью совместим с Perl. – friedo
PCRE - это не Perle Regex Engine. Как раз из имени (Perl-Compatible) вы должны признать, что PCRE не является механизмом регулярного выражения Perl. PCRE - независимый движок. Регулы Perl намного мощнее, чем PCRE. –
Мое понимание заключалось в том, что PCRE зеркалировала библиотеку регулярных выражений Perl, только потому, что они не шли с более поздними изменениями в Perl (поэтому, возможно, отражая Perl 5.6 или 5.8). – ThomasH