English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Класс java.util.regex.Matcher представляет собой движок для выполнения различных операций совпадения. Этот класс не имеет конструктора, и его можно использоватьmatches()
Метод класса java.util.regex.Pattern создает/получает объект этого класса.
В регулярных выражениях, lookbehind и lookahead структуры используются для совпадения с определенными шаблонами до или после других шаблонов. Например, если вам нужно принимать строку от 5 до 12 символов, регулярное выражение будет-
"\\A(?=\\w{6,10}\\z)";
По умолчанию, границы области совпадения для вперед, назад и границ совпадения не прозрачны, то есть эти структуры не могут совпадать с содержимым текста за пределами области совпадения-
этот классметодhasTransparentBounds()Метод проверяет, использует ли текущий мачер прозрачные границы, если да, то возвращает true,否则 false.
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class HasTransparentBounds { public static void main(String[] args) { // Регулярное выражение принимает от 6 до 10 символов String regex = "\\A(?=\\w{6,10}\\z)"; System.out.println("Введите 5 до 12 символов: "); String input = new Scanner(System.in).next(); // Создание объекта шаблона Pattern pattern = Pattern.compile(regex); //Create a Matcher object Matcher matcher = pattern.matcher(input); //Set the region to the input string matcher.region(0, 4); if(matcher.find()) { System.out.println("Match found"); } else { System.out.println("Match not found"); } boolean bool = matcher.hasTransparentBounds(); //Switch to transparent range if(bool) { System.out.println("Current matcher uses transparent bounds"); } else { System.out.println("Current matcher user non-transparent bound"); } } }
Output result
Enter 5 to 12 characters: sampletext Не найдено совпадение Текущий мачер пользователь не прозрачные границы
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class HasTransparentBounds { public static void main(String[] args) { // Регулярное выражение принимает от 6 до 10 символов String regex = "\\A(?=\\w{6,10}\\z)"; System.out.println("Введите 5 до 12 символов: "); String input = new Scanner(System.in).next(); // Создание объекта шаблона Pattern pattern = Pattern.compile(regex); //Create a Matcher object Matcher matcher = pattern.matcher(input); //Set the region to the input string matcher.region(0, 4); matcher.useTransparentBounds(true); if(matcher.find()) { System.out.println("Match found"); } else { System.out.println("Match not found"); } boolean bool = matcher.hasTransparentBounds(); //Switch to transparent range if(bool) { System.out.println("Current matcher uses transparent bounds"); } else { System.out.println("Current matcher user non-transparent bound"); } } }
Output result
Enter 5 to 12 characters: sampletext Match found Current matcher uses transparent bounds