LINUX.ORG.RU

История изменений

Исправление gns, (текущая версия) :

Читаем Драгонбук. Там нет ничего про всякие квадратные скобки, диапазоны, опциональные блоки с заданным шаблоном, указанные количества повторений итд, Регекс определяется рекурсивно следующим образом:

БАЗИС: Базис образован двумя правилами. 1. e является регулярным выражением, а L (e) представляет собой {e}, т.е. язык, единственный член которого — пустая строка. 2. Если a — символ в Σ, то a представляет собой регулярное выражение, а L (a) = {a}, т.е. язык с одной строкой единичной длины, с символом a в единственной позиции.

ИНДУКЦИЯ: Имеется четыре правила индукции, посредством которых регулярные выражения строятся из более мелких. Предположим, что r и s являются регуляр- ными выражениями, описывающими соответственно языки L (r) и L (s). 1. (r) | (s) — регулярное выражение, описывающее язык L (r) ∪ L (s). 2. (r) (s) — регулярное выражение, описывающее язык L (r) L (s). 3. (r)∗ — регулярное выражение, описывающее язык (L (r))∗ . 4. (r) — регулярное выражение, описывающее язык L (r). Это правило го- ворит о том, что можно заключить выражение в скобки без изменения описываемого им языка.

И все!

После этого придумали кучу расширений. Сейчас под регексом обычно понимается некий шаблон (англ. pattern), состоящий из символов и метасимволов и задающий правило поиска.

Из этого следует, что *, **, ? являются частными случаями таких паттернов, пусть и самыми простыми.

И да, в терминах позикса, * == [^/\0]*, ** == *, ? = .

Все остальное — это каша в голове, вызванная множественностью терминологии и стилевыми особенностями.

Исправление gns, :

Читаем Драгонбук. Там нет ничего про всякие квадратные скобки, диапазоны, опциональные блоки с заданным шаблоном, указанные количества повторений итд, Регекс определяется рекурсивно следующим образом:

БАЗИС: Базис образован двумя правилами. 1. e является регулярным выражением, а L (e) представляет собой {e}, т.е. язык, единственный член которого — пустая строка. 2. Если a — символ в Σ, то a представляет собой регулярное выражение, а L (a) = {a}, т.е. язык с одной строкой единичной длины, с символом a в единственной позиции.

ИНДУКЦИЯ: Имеется четыре правила индукции, посредством которых регулярные выражения строятся из более мелких. Предположим, что r и s являются регуляр- ными выражениями, описывающими соответственно языки L (r) и L (s). 1. (r) | (s) — регулярное выражение, описывающее язык L (r) ∪ L (s). 2. (r) (s) — регулярное выражение, описывающее язык L (r) L (s). 3. (r)∗ — регулярное выражение, описывающее язык (L (r))∗ . 4. (r) — регулярное выражение, описывающее язык L (r). Это правило го- ворит о том, что можно заключить выражение в скобки без изменения описываемого им языка.

И все!

После этого придумали кучу расширений. Сейчас под регексом обычно понимается некий шаблон (англ. pattern), состоящая из символов и метасимволов и задающая правило поиска.

Из этого следует, что *, **, ? являются частными случаями таких паттернов, пусть и самыми простыми.

И да, в терминах позикса, * == [^/\0]*, ** == *, ? = .

Все остальное — это каша в голове, вызванная множественностью терминологии и стилевыми особенностями.

Исходная версия gns, :

Читаем Драгонбук. Там нет ничего про всякие квадратные скобки, диапазоны, опциональные блоки с заданным шаблоном, указанные количества повторений итд, Регекс определяется рекурсивно следующим образом:

БАЗИС: Базис образован двумя правилами. 1. e является регулярным выражением, а L (e) представляет собой {e}, т.е. язык, единственный член которого — пустая строка. 2. Если a — символ в Σ, то a представляет собой регулярное выражение, а L (a) = {a}, т.е. язык с одной строкой единичной длины, с символом a в единственной позиции.

ИНДУКЦИЯ: Имеется четыре правила индукции, посредством которых регулярные выражения строятся из более мелких. Предположим, что r и s являются регуляр- ными выражениями, описывающими соответственно языки L (r) и L (s). 1. (r) | (s) — регулярное выражение, описывающее язык L (r) ∪ L (s). 2. (r) (s) — регулярное выражение, описывающее язык L (r) L (s). 3. (r)∗ — регулярное выражение, описывающее язык (L (r))∗ . 4. (r) — регулярное выражение, описывающее язык L (r). Это правило го- ворит о том, что можно заключить выражение в скобки без изменения описываемого им языка.

И все!

После этого придумали кучу расширений. Сейчас под регексом обычно понимается некий шаблон (англ. pattern), состоящая из символов и метасимволов и задающая правило поиска.

Из этого следует, что *, **, ? являются частными случаями таких паттернов, пусть и самыми простыми.

И да, в терминах позикса, * == [^/\0]*, ** == *, ? = .