Недавно я вступил в дружеский спор с Готи о том, что является регулярным выражением в комментариях к моему ответу на этот вопрос. Я утверждал, что следующее является регулярным выражением:
`[Rr]eading[Tt]est[Dd]ata`
Готи не согласен с этим, утверждая, что это файл. Глоб страница на Википедии утверждает , что (курсив мой):
Глобусы не включают синтаксис звезды Клини, который допускает многократное повторение предыдущей части выражения; таким образом, они не считаются регулярными выражениями, которые могут описывать больший набор регулярных языков по любому заданному конечному алфавиту.
Тем не менее, нет никаких ссылок на это утверждение, что указывает на то, что это просто мнение редактора Википедии.
В спецификации Single UNIX ® версии 2 указано, что базовое регулярное выражение (BRE) может быть даже одним символом:
Обычный символ - это BRE, который соответствует самому себе: любой символ в поддерживаемом наборе символов, за исключением специальных символов BRE, перечисленных в специальных символах BRE.
Итак, каково определение регулярного выражения в мире * nix, и исключает ли это определение файловые глобусы?
*
имеет два разных значения в BRE и globs. Примечание: я не думаю, что термин glob используется где-либо в спецификации POSIX - вместо этого он называется Pattern Matching и описан в главе о языке оболочки.
grep
,sed
, иawk
. Vim использует свое собственное разнообразие, как и Perl.