В этом уроке по регулярным выражениям Java мы научимся проверять, находится ли количество слов во входном тексте в пределах определенного минимального и максимального предела.
1. Регулярное выражение
Следующее регулярное выражение очень похоже на предыдущее руководство по ограничению количества непробельных символов, за исключением того, что каждое повторение соответствует целому слову, а не одному непробельному символу. Оно соответствует от 2 до 10 слов, пропуская любые несловесные символы, включая знаки препинания и пробелы:
^\\W*(?:\\w+\\b\\W*){2,10}$
Регулярное выражение соответствует строке, которая:
- Начинается с любого количества несловарных символов(или вообще без несловарных символов).
- Содержит от 2 до 10 слов(каждое слово состоит из одного или нескольких словесных символов).
- За каждым словом следует разделитель слов(\\b).
- После каждого слова может быть любое количество несловесных символов(включая пробелы, знаки препинания и т. д.).
- Строка должна заканчиваться после 2-го по 10-е слово.
Примеры совпадений:
- «Привет, мир!»(2 слова)
- «один-два-три 4 5″(5 слов)
- «тест, ввод»(2 слова, с пробелами и запятыми)
Примеры несовпадений:
- «Один»(только 1 слово, что меньше 2)
- «Это очень длинное предложение, в нем слишком много слов»(слишком много, чем 10 слов)
2. Пример Java
Следующая программа на Java демонстрирует использование классов Pattern и Matcher для компиляции и выполнения регулярного выражения.
String regex = "^\\W*(?:\\w+\\b\\W*){2,10}$"; // Regex to limit to 3 wordsPattern pattern = Pattern.compile(regex);// Test inputString input = "Hello World Java";// Check if the input matches the regexMatcher matcher = pattern.matcher(input);if(matcher.matches()) {System.out.println("Valid input: " + input); // Prints this} else {System.out.println("Invalid input: " + input);}
Я советую вам поэкспериментировать с приведенным выше простым регулярным выражением, чтобы попробовать больше вариаций.