Я столкнулся с ситуациями, когда поддерживаются только шаблоны в стиле глобуса, и полной поддержки регулярных выражений нет, например, ключи redis. Я хотел бы узнать различие между ними. Также мне интересно, реализует ли алгоритм соответствия регулярному выражению более сложный по сравнению с шаблоном стиля glob, который некоторые программные средства не поддерживают регулярное выражение вообще?
Каковы различия между шаблоном стиля глобуса и регулярным выражением?
Ответ 1
Традиционные групповые символы поддерживают очень узкий набор метасимволов - *
- это "что угодно", ?
- произвольный одиночный символ; Оболочка Bourne также поддерживает [a-z123]
для одного символа из набора альтернатив и [!x-z789]
для любого, кроме перечисленных.
Очевидно, что Regex гораздо богаче, поддерживает повторения и (в ERE) чередование и определенное количество повторений. Регулярное выражение в стиле Perl расширяет формализм до такой степени, что было написано несколько книг, и будет еще больше.
Базовое регулярное выражение не намного сложнее в программировании, чем глобальные подстановочные знаки, и в наши дни компетентный программист в любом случае будет ссылаться на существующую библиотеку.
Многие более простые системы не хотят обременять своих пользователей сложностью изучения регулярных выражений - даже простые подстановочные знаки - непростая задача для вашего обычного продавца, который не является постоянным пользователем компьютера.
Ответ 2
Регулярные выражения используются в командах/функциях для сопоставления шаблонов в тексте. Например, в параметре шаблона grep или в языках программирования.
Globbing используется оболочками для сопоставления имен файлов и каталогов с помощью подстановочных знаков. Возможности globbing зависят от оболочки. Bash, например, поддерживает такие подстановочные знаки, как:
Более подробную информацию можно найти здесь