Bash, który regextype lepszy ?

0

https://www.gnu.org/software/findutils/manual/html_node/find_html/Regular-Expressions.html#Regular-Expressions

Mam do Was kilka pytanek :
Która ze składni wyrażeń regularnych jest najlepsza czy najpopularniejsza?
Należy do wszystkich programów stosować jedną czy do każdego inną (na przykład find)?
Po co jest ich aż tyle, z czego posix-extended i posix-egrep różnią się minimalnie (ryzyko pomyłek)?

1
  1. Używasz jakiegoś narzędzia, które rozumie wyrażenie regularne -> trzeba dostarczyć takie wyrażenia jakie rozumie narzędzie
  2. Akceptujesz jakieś wyrażenia regularne w Twoim narzędziu (np. jako parametry) -> powinieneś wskazać jakie akceptujesz, a nie że dowolne

Jak Twój skrypt/wyrażenie ma działać na środowiskach zgodnych z POSIX (Linuksy), to wybierasz narzędzie ze wsparciem dla wersji wyrażeń regularnych, w której najłatwiej da się problem rozwiązać (bo po co się męczyć z jakimiś potwornymi/nie do utrzymania wyrażeniami regularnymi?).

"Wyrażenia linuksowe" mogą nie działać na Uniksach opartych o SystemV czy BSD, więc jak masz przypadek, że Twój skrypt powinien działać na różnych platformach, to pewnie będziesz chciał zrealizować zadanie w oparciu o minimalny wspólny zestaw wspieranych wyrażeń regularnych (albo robił jakieś rozwiązanie typu: IF SystemV to tak, if BSD to tak, itd.)

0
yarel napisał(a):
  1. Używasz jakiegoś narzędzia, które rozumie wyrażenie regularne -> trzeba dostarczyć takie wyrażenia jakie rozumie narzędzie
  2. Akceptujesz jakieś wyrażenia regularne w Twoim narzędziu (np. jako parametry) -> powinieneś wskazać jakie akceptujesz, a nie że dowolne

Chodzi o to że, na przykład find akceptuje dużo różnych składni, które można wskazać jako parametry, pytanie która jest najlepsza/najbardziej uniwersalna

1

Z tych opisanych w linku gnu.org:

‘emacs’
  Regular expressions compatible with GNU Emacs; this is also the default behaviour if this option is not used. 
‘posix-awk’
  Regular expressions compatible with the POSIX awk command (not GNU awk) 
‘posix-basic’
  POSIX Basic Regular Expressions. 
‘posix-egrep’
  Regular expressions compatible with the POSIX egrep command 
‘posix-extended’
  POSIX Extended Regular Expressions

Ja częściej używam egrepa niż finda, więc dla mnie naturalnym są posix-egrep i w findzie przełączam domyślne (emacsowe) na posix-egrep (via findowe -regextype).
Dużo zależy od tego jak interpretujesz najlepsza/uniwersalna. Gdybym używał emacsa, to pewnie naturalne byłyby emacsowe i w findzie bym nie przełączał ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1