Каковы различия между шаблоном стиля glob и регулярным выражением?

Я сталкивался с ситуациями, когда поддерживаются только шаблоны в стиле glob и отсутствует полная поддержка регулярных выражений, например, ключи redis. Я хотел бы знать разницу между ними. Кроме того, меня удивляет, является ли реализация алгоритма сопоставления регулярных выражений более сложной по сравнению с шаблоном в стиле глобуса, когда некоторые программы вообще не поддерживают регулярные выражения?

2 ответа

Традиционные глобальные подстановочные знаки поддерживают очень узкий набор метасимволов - * это "что-нибудь", ? произвольный одиночный символ; Bourne shell также поддерживает [a-z123] для одного символа из набора альтернатив, и [!x-z789] любой, кроме перечисленных.

Очевидно, что Regex гораздо богаче, поддерживает повторения и (в ERE) чередование и определенное количество повторений. Регулярное выражение в стиле Perl расширяет формализм до такой степени, что было написано несколько книг, и будет еще больше.

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

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

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

Globbing используется оболочками для сопоставления имен файлов и каталогов с использованием подстановочных знаков. Возможности сглаживания зависят от оболочки. Bash, например, поддерживает подстановочные знаки, такие как:

Более подробную информацию можно найти здесь

Другие вопросы по тегам