Я знаю, что существует регулярное выражение perl, которое является незначительным стандартом де-факто, но почему никто не придумал универсальный набор стандартных символов, синтаксиса и поведения?
Почему нет стандартного выражения?
Ответ 1
Существует стандарт IEEE, связанный с усилием POSIX. Реальный вопрос: "Почему все не следуют за ним"? Ответ, вероятно, заключается в том, что он не настолько сложный, как PCRE, в отношении жадного соответствия, а что нет.
Ответ 2
Собственно, там есть стандарт регулярного выражения (POSIX), но он дерьмовый. Поэтому люди расширяют свой механизм RE, чтобы соответствовать потребностям их применения. PCRE (регулярные выражения, совместимые с Perl) - это псевдостандарт регулярных выражений, совместимых с движком Perl RE. Это особенно актуально, потому что вы можете встроить Perl-движок в другие приложения.
Ответ 3
Потому что делать стандарты сложно. Почти невозможно получить достаточно людей, чтобы согласиться на что-либо, чтобы сделать его официальным стандартом, не говоря уже о чем-то сложном, как регулярное выражение. Стандарты Defacto намного легче найти.
Дело в том, что стандарт HTML 5 не станет официальным стандартом до 2022 года. Но спецификация проекта уже доступна, и основные функции стандарта начнут появляться в браузерах задолго до того, как стандарт станет официальным.
Ответ 4
Я исследовал это и не смог найти ничего конкретного. Я предполагаю, что это потому, что регулярное выражение часто является инструментом, который работает с инструментами ON, и поэтому он обязательно будет иметь расширения для платформы и инструмента.
Например, в Visual Studio вы можете использовать регулярные выражения для поиска и замены строк в исходном коде. Они добавили такие вещи, как: i, чтобы соответствовать идентификатору. На других платформах в других инструментах идентификаторы могут не быть применимой концепцией. На самом деле, возможно, другие платформы и инструменты сохраняют символ двоеточия, чтобы избежать выражения.
Подобные различия делают эту задачу особенно сложной для стандартизации.
Ответ 5
Перл был первым (или danm почти рядом с первым), и, хотя он и perl, и мы все любим его, старые люди считали, что ему нужно больше польских (то есть функций). Здесь появились новые типы.
Они начинают номинализировать, регулярное выражение, используемое в .NET, очень похоже на регулярное выражение, используемое на других языках, я думаю, что люди начинают унифицировать, но некоторые из них используются для их perl-способов и не хотят меняться.
Ответ 6
Просто догадаться: никогда не было версии, достаточно популярной, чтобы считаться каноническим стандартом, и не было стандартной реализации. Каждый, кто пришел и переоценил его, имел свои собственные идеи о том, как сделать его "лучше".
Ответ 7
Потому что слишком много людей боятся регулярных выражений, поэтому они недостаточно широко распространены для достаточно разумных людей, чтобы они обдумывали идею и были в состоянии ее реализовать.
Даже если стандарты орган сделал форму и попытаться унифицировать различные ароматы, слишком многие люди утверждают, упорно к своему собственному подходу, будь то лучше или нет, потому что многие программисты раздражает, как это.