Niedawno wdałem się w przyjacielską kłótnię z Ghoti na temat tego, co stanowi regularne wyrażenie w komentarzach do mojej odpowiedzi na to pytanie. Twierdziłem, że następujące wyrażenie jest wyrażeniem regularnym:
`[Rr]eading[Tt]est[Dd]ata`
Ghoti się nie zgodził, twierdząc, że jest to glob pliku. Strona globalna na Wikipedii twierdzi, że (moje wyróżnienie):
Globs nie zawierają składni dla gwiazdy Kleene, która umożliwia wielokrotne powtórzenie poprzedniej części wyrażenia; dlatego nie są uważane za wyrażenia regularne, które mogą opisywać większy zestaw języków regularnych nad dowolnym skończonym alfabetem.
Jednak nie ma cytatu na to twierdzenie, co wskazuje, że jest to tylko opinia konkretnego redaktora Wikipedii.
Single UNIX ® Specyfikacja, wersja 2 , stwierdza, że podstawowe wyrażenie regularne (BRE) może być nawet pojedynczy znak:
Zwykły znak to BRE, który pasuje do siebie: dowolny znak w obsługiwanym zestawie znaków, z wyjątkiem znaków specjalnych BRE wymienionych w Znakach specjalnych BRE.
Jaka jest zatem definicja wyrażenia regularnego w świecie * nix i czy ta definicja wyklucza globusy plików?
*
ma dwa różne znaczenia w BRE i globach. Uwaga: Nie sądzę, aby termin glob był używany w dowolnym miejscu specyfikacji POSIX - zamiast tego nazywa się Dopasowywanie wzorców i jest opisany w rozdziale dotyczącym języka powłoki.
grep
,sed
iawk
. Vim używa własnej odmiany, podobnie jak Perl.