Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

Bash: Operator =~

środa,

Bash: Operator =~

Operator =~ w bashu jest operatorem dopasowania wyrażeń regularnych. Jest on dostępny od wersji Bash 3.0. Używa się go wewnątrz warunków konstrukcji [[ ]], aby sprawdzić, czy dany ciąg znaków (string) pasuje do określonego wzorca wyrażenia regularnego.

Podstawowa składnia

if [[ $string =~ $regex ]]; then
  echo "Dopasowanie znalezione."
else
  echo "Dopasowanie nieznalezione."
fi
  • $string to zmienna lub ciąg znaków do przetestowania;
  • $regex to wyrażenie regularne, do którego jest dopasowywany ciąg znaków.

Przykłady

Sprawdzanie, czy łańcuch znaków zawiera cyfry

if [[ $string =~ [0-9]+ ]]; then
  echo "Łańcuch zawiera cyfry."
fi

Poprawność adresu email

regex='^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$'
if [[ $email =~ $regex ]]; then
  echo "Poprawny adres email."
else
  echo "Niepoprawny adres email."
fi

Ekstrakcja części dopasowania

Po udanym dopasowaniu dopasowane części wyrażenia regularnego są zapisywane do specjalnej zmiennej BASH_REMATCH. Pierwszy element tej tablicy (BASH_REMATCH[0]) zawiera całe dopasowanie, a kolejne elementy (BASH_REMATCH[1], BASH_REMATCH[2], ...) zawierają dopasowania grup w nawiasach ().

if [[ $string =~ ([a-zA-Z]+)[0-9]+ ]]; then
  echo "Znaleziono literę: ${BASH_REMATCH[1]}"
fi

Uwagi

  • W wyrażeniach regularnych używanych z =~, dobrą praktyką jest umieszczanie wzorca w cudzysłowie, aby uniknąć problemów z rozwijaniem wzorców przez Bash przed ich użyciem.
  • W Bashu wersji 3.1 i nowszych w wyrażeniach regularnych nie są wymagane znaki ucieczki dla znaków specjalnych, gdy są one w cudzysłowie.
  • Dokładne działanie operatora =~ i obsługiwane składnie wyrażeń regularnych mogą się różnić w zależności od wersji bash i systemu operacyjnego.

Artykuł: Narodowe Czytanie 2024

Narodowe Czytanie 2024

Artykuł: Kiermasz podręczników

Kiermasz podręczników

Artykuł: Terminy zjazdów w Liceum dla Dorosłych

Terminy zjazdów w Liceum dla Dorosłych

Artykuł: Rozpoczęcie roku szkolnego

Rozpoczęcie roku szkolnego

Artykuł: Tom DeMarco

Tom DeMarco

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły