Регулярные выражения Java: часть 5 — Подробнее о методах группировки

В последней части мы использовали метод группировки, чтобы пользователи могли вводить данные. В этой части вы увидите, что технику группировки можно применять и в других случаях.
Другой случай использования метода группировки — предоставление списка элементов, из которого пользователи могут выбирать.
Давайте посмотрим следующий код:

import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        boolean flag;
        Scanner sc = new Scanner(System.in);
        do {
            String favorPattern = "(sport|music|book|movie)";
            System.out.print("Input a favorite (sport,music,book,movie): ");
            String input = sc.next();
            flag = input.matches(favorPattern);
            if (!flag) System.out.println("Invalid data!");
        } while (!flag);
        System.out.println("Valid data");
    }
}

В коде у меня был шаблон:

String emailPattern = "(sport|music|book|movie)";

Чтобы предоставить список элементов, из которых пользователи могут выбирать, нам нужно поместить эти элементы в группу и разделить каждый элемент вертикальной чертой. Это означает, что пользователи могут вводить только один из них в группе.
Запустим программу и увидим:

Input a favorite (sport,music,book,movie): reading
Invalid data!
Input a favorite (sport,music,book,movie): sport
Valid data

«чтение»: недействительно, потому что его не было в списке
«спорт»: действительный, потому что он был в списке

Другой случай заключается в том, что мы можем применить технику группировки при проверке форматов даты и времени, которые очень часто встречаются при вводе данных.
Давайте посмотрим следующий код:

import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        boolean flag;
        Scanner sc = new Scanner(System.in);
        do {
            String dobPattern = "([1-9]{1,2}/)?([1-9]{1,2})/([0-9]{4})";
            System.out.print("Input your day of birth: ");
            String input = sc.next();
            flag = input.matches(dobPattern);
            if (!flag) System.out.println("Invalid data!");
        } while (!flag);
        System.out.println("Valid data");
    }
}

В коде я использовал следующий шаблон для проверки формата дня рождения:

String dobPattern = "([1-9]{1,2}/)?([1-9]{1,2})/([0-9]{4})";

В шаблоне у меня есть 3 группы:
Группа 1: ([1-9]{1,2}/)?
Это на дату. В этой группе пользователи должны ввести не менее 1 цифры и не более 2 цифр от 1 до 9; за которым следует / для разделения с месяцем. Пользователи могут игнорировать эту часть.
Группа 2: ([1-9]{1,2})
Это за месяц. Я уверен, вы понимаете, что это значит. Ну, это не отличается от группы 1.
Группа 3: ([0-9]{4})
Это за год. Пользователи должны ввести все 4 цифры
Запустим и проверим:

Input day of birth: 1212/1980
Invalid data!
Input day of birth: 12/1980
Valid data
Input day of birth: 1/12/1980
Valid data

1212/1980: недействительно, потому что не было / между датой и месяцем
12/1980: полностью действителен, поскольку пользователи могут игнорировать дату
12.01.1980: также действует

Сопоставление текста для проверки — это только одно из применений регулярных выражений. Существует бесчисленное множество способов применения регулярных выражений.
Давайте перейдем к следующей части, чтобы увидеть, что мы можем применять регулярные выражения для манипуляций со строками.

Предыдущая часть

Следующая часть

Посещать Learnbyproject.net бесплатно Курсы по регулярным выражениям и другие бесплатные курсы

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *