Использование регулярных выражений в условных операторах Bash: методы и примеры

В Bash вы можете использовать регулярные выражения (regex) в условных операторах, используя ключевое слово [[и оператор =~. Вот несколько методов и примеры кода:

Метод 1: простое сопоставление

string="Hello, World!"
if [[ $string =~ ^Hello ]]; then
    echo "The string starts with 'Hello'"
fi

В этом примере проверяется, начинается ли строка с «Hello», с помощью привязки ^в шаблоне регулярного выражения.

Метод 2: сопоставление без учета регистра

string="Hello, World!"
if [[ $string =~ [Hh]ello ]]; then
    echo "The string contains 'Hello' or 'hello'"
fi

Этот пример соответствует либо «Привет», либо «привет», используя класс символов [Hh].

Метод 3. Извлечение совпадений

string="My phone number is 123-456-7890"
if [[ $string =~ ([0-9]{3}-[0-9]{3}-[0-9]{4}) ]]; then
    echo "Phone number: ${BASH_REMATCH[1]}"
fi

В этом примере из строки извлекается номер телефона в формате 123-456-7890с использованием групп захвата и массива BASH_REMATCH.

Метод 4. Отрицание шаблона

string="Hello, World!"
if [[ ! $string =~ [0-9] ]]; then
    echo "The string does not contain any digits"
fi

В этом примере проверяется, не содержит ли строка цифр, с помощью оператора !.