Jak negować operatora wyrażeń regularnych ZSH?
Chciałbym zrobić coś takiego:
if [[ $host !~ '^myhost[0-9]+$' ]]
then
# Do stuff
# ...
fi
...lub:
if [[ !($host =~ '^myhost[0-9]+$') ]]
then
# Do stuff
# ...
fi
... ale nie wygląda na to, że ZSH implementuje dowolnego operatora negacji wyrażeń regularnych. Czy jest łatwiejszy sposób niż ten:
if [[ $host =~ '^myhost[0-9]+$' ]]
then
else
# Do stuff
# ...
fi
Dzięki!
'^(?!myhost[0-9]+$).+$'
Powinien pasować do wszystkich, alemyhost[0-9]+
.if [[ ! ($host =~ '^myhost[0-9]+$') ]]
.Odpowiedzi:
Negacja całego testu byłaby najłatwiejsza. Głównie dlatego, że jest łatwy do zapamiętania i nie zależy od konkretnej składni warunku:
źródło