Автор оригинала: 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”