Операторы регулярных выражений RFC

Недавно я прочитал документ RFC и заметил, что используемые операторы регулярных выражений не соответствуют общеизвестным. Например:

date-time = [ day-of-week "," ] date time [CFWS]
year = (FWS 4*DIGIT FWS) / obs-year

Квадратная скобка означает, что он будет соответствовать только одному из нескольких символов в нем. Но в RFC я вижу, что они интерпретируют это как "опционально". То же самое со звездочкой, которая говорит, что предыдущий токен будет встречаться ноль раз или более. В нашем примере

4*DIGIT

что нетрудно догадаться, что означает 4 вхождения токена DIGIT.

Как следует интерпретировать операторы регулярных выражений RFC, есть ли документ, описывающий их назначение?

1 ответ

Решение

Документ (на мой взгляд), на который вы смотрите, RFC 2822, гласит:

1.2.2. Синтаксическая запись

В этом стандарте используются форматы расширенной формы Бэкуса-Наура (ABNF), указанные в [RFC2234] для формальных определений синтаксиса сообщений.

Итак, да, синтаксис определен в RFC 2234 и не является регулярными выражениями.

Несколько разделов, специфичных для указанного вами блока:

3.5 Группа последовательностей

Элементы, заключенные в круглые скобки, рассматриваются как один элемент, содержимое которого СТРОГО ЗАКАЗАНО.

3.6 Повторение переменной

Оператор "*", предшествующий элементу, указывает на повторение. Полная форма:

   <a>*<b>element

где и являются необязательными десятичными значениями, указывающими не менее и не более вхождений элемента.

3.8 Необязательная последовательность

Квадратные скобки заключают в себе дополнительную последовательность элементов:

Другие вопросы по тегам