Рубрики
Без рубрики

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

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

Автор оригинала: Sera.Ng.

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

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

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

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

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

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

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

Оригинал: “https://www.codementor.io/@seranguyen/java-regular-expression-part-5-more-on-grouping-techniques-rbhfp0nki”