Почему некоторые команды regex имеют напротив intepretations '\' с различными символами?

от commandlinefu:

tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]"

или

echo "You can simulate on-screen typing just like in the movies" | pv -qL 10

10
17.02.2011, 22:23
1 ответ

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

Исторически, каждый инструмент имел свою собственную новую реализацию, делая независимо от того, что автор думал лучше всего. Существует баланс между созданием символов, особенных с и не выходя — слишком много символов, которые "естественно специальны", и Вы заканчиваете тем, что имели необходимость выйти из них все время только для соответствия на них; или, наоборот, Вы заканчиваете тем, что нуждались в наборе Escape для использования общего regex синтаксиса как () группировка. И все пишущие программу, решенную, как сделать это на основе потребностей того, что их программа, подобранная против, на том, что они чувствовали, была правильным подходом, и на фазе луны.

Существует попытка стандартизации от POSIX, который определяет "основные регулярные выражения" и "расширенные регулярные выражения". Удивительно, они работают назад друг от друга в отношении \иногда, но не с идеальной непротиворечивостью.

Регулярные выражения Perl стали другим defacto стандартом по двум причинам: во-первых, они очень гибки и мощны, и во-вторых, они на самом деле довольно нормальны, с конвенциями как "\всегда выходит из небуквенно-цифрового знака".

GNU Находит, имеет a -regextype опция, где можно изменить используемый синтаксис регулярного выражения. К сожалению, "perl" не является опцией, по крайней мере, в версии находки, которую я имею. (Значение по умолчанию, не удивительно от GNU, "emacs", и тот синтаксис документируется здесь.)

12
27.01.2020, 20:02

Теги

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