Почему не там стандарт регулярного выражения?

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

33
задан weiy 10 May 2010 в 21:48
поделиться

7 ответов

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

16
ответ дан 27 November 2019 в 19:32
поделиться

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

9
ответ дан 27 November 2019 в 19:32
поделиться

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

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

2
ответ дан 27 November 2019 в 19:32
поделиться

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

0
ответ дан 27 November 2019 в 19:32
поделиться

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

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

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

1
ответ дан 27 November 2019 в 19:32
поделиться

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

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

0
ответ дан 27 November 2019 в 19:32
поделиться

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

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

-3
ответ дан 27 November 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: