Поскольку регулярные выражения имеют только три операции:
- Конкатенация
- Союз
|
- Закрытие Клини
*
Все остальное является расширением или синтаксическим сахаром и поэтому не имеет источника для стандартизации. Такие вещи, как захват групп, обратные ссылки, классы символов, кардинальные операции и т. Д., Являются дополнениями к первоначальному определению регулярных выражений.
Некоторые из этих расширений делают «регулярные выражения» более не регулярными вообще. Из-за этих дополнительных возможностей они могут выбирать нерегулярные языки, но мы все равно называем их регулярными выражениями.
Когда люди добавляют больше расширений, они часто пытаются использовать другие, распространенные варианты регулярных выражений. Вот почему почти каждый диалект использует X+
для обозначения «один или несколько X», что само по себе является просто ярлыком для написания XX*
.
Но когда добавляются новые функции, нет никаких оснований для стандартизации, поэтому кто-то должен что-то придумать. Если более чем одна группа дизайнеров предложит сходные идеи в одно и то же время, у них будут разные диалекты.