Почему нет стандарта регулярных выражений? - PullRequest
33 голосов
/ 11 мая 2010

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

Ответы [ 7 ]

16 голосов
/ 11 мая 2010

Существует стандарт IEEE, связанный с усилием POSIX . На самом деле вопрос «почему не все следуют этому» ? Ответ, вероятно, в том, что он не так сложен, как PCRE, в отношении жадного сопоставления, а что нет.

9 голосов
/ 11 мая 2010

На самом деле, - это стандарт регулярных выражений (POSIX), но он дерьмовый. Таким образом, люди расширяют свой двигатель RE, чтобы соответствовать потребностям их применения. PCRE (Perl-совместимые регулярные выражения) - это псевдостандарт для регулярных выражений, совместимых с движком RE Perl. Это особенно актуально, потому что вы можете встроить движок Perl в другие приложения.

2 голосов
/ 11 мая 2010

Потому что делать стандарты сложно. Почти невозможно заставить достаточно людей договориться о чем-либо, чтобы сделать это официальным стандартом, не говоря уже о чем-то таком сложном, как регулярное выражение. Стандарты Defacto намного проще найти.

Пример: HTML 5, как ожидается, не станет официальным стандартом до 2022 года. Но проект спецификации уже доступен, и основные функции стандарта появятся в браузерах задолго до того, как стандарт станет официальным.

1 голос
/ 11 мая 2010

Я исследовал это и не смог найти ничего конкретного. Я предполагаю, что это потому, что регулярные выражения так часто являются инструментом, который работает с ON инструментами, и поэтому обязательно будут иметь расширения для платформы и инструмента.

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

Подобные различия делают его особенно сложным для стандартизации.

0 голосов
/ 11 мая 2010

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

Даже если стандарты орган сделал форму и попытаться унифицировать различные ароматы, слишком многие люди утверждают, упорно к своему собственному подходу, будь то лучше или нет, потому что многие программисты раздражает, как это.

0 голосов
/ 11 мая 2010

Просто предположение: никогда не было версии, достаточно популярной, чтобы считаться каноническим стандартом, и не было стандартной реализации. У каждого, кто приходил и реализовывал его, были свои идеи, как сделать его «лучше».

0 голосов
/ 11 мая 2010

Perl был первым (или дан близко к первому), и хотя он и perl, и мы все его любим, он стар, но некоторые люди чувствовали, что ему нужно больше блеска (то есть возможностей). Здесь появились новые типы.

Они начинают облагораживать, регулярное выражение, используемое в .NET, очень похоже на регулярное выражение, используемое в других языках, я думаю, что люди постепенно начинают объединяться, но некоторые привыкли к их способам perl и не хотят меняться.

...