English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
java.util.regex.Matcher-Klasse stellt einen Motor für verschiedene Matching-Operationen dar. Diese Klasse hat keinen Konstruktor und kann mitmatches()
Das von der Methode java.util.regex.Pattern erstellte/Objekt dieser Klasse erhalten.
In regulären Ausdrücken werden lookbehind und lookahead-Konstrukte verwendet, um bestimmte Muster vor oder nach anderen Mustern zu matchen. Zum Beispiel, wenn Sie akzeptieren müssen5bis12Zeichen der Zeichenkette, dann der reguläre Ausdruck ist-
"\\A(?=\\w{6,10}\\z)";
Standardmäßig sind die Grenzen des Matching-Bereichs für vorwärts, rückwärts und Grenzmuster nicht transparent, d.h. diese Strukturen können keine Eingabetexte außerhalb des Bereichs matchen-
Diese KlasseMethodehasTransparentBounds()Die Methode überprüft, ob der aktuelle Matcher transparente Grenzen verwendet, und gibt bei Ja true zurück, sonst false.
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class HasTransparentBounds { public static void main(String[] args) { //Die reguläre Ausdrucksform kann akzeptieren6bis10Zeichen String regex = "\\A(?=\\w{6,10}\\z)"; System.out.println("Enter 5 bis 12 Zeichen: "); String input = new Scanner(System.in).next(); //Erstellen Sie ein Musterobjekt Pattern pattern = Pattern.compile(regex); //Ein Matcher-Objekt erstellen Matcher matcher = pattern.matcher(input); //Den Bereich auf die Eingabezeichenfolge einstellen matcher.region(0, 4); if(matcher.find()) { System.out.println("Treffer gefunden"); } else { System.out.println("Kein Treffer gefunden"); } boolean bool = matcher.hasTransparentBounds(); //Wechsel zu transparentem Bereich if(bool) { System.out.println("Der aktuelle Matcher verwendet transparente Grenzen"); } else { System.out.println("Der aktuelle Matcher verwendet transparente Grenzen");-transparente Grenzen"); } } }
Ausgabeergebnis
Eingeben 5 bis 12 Zeichen: sampletext Kein Treffer Aktueller Matcher Benutzer nicht-transparent bound
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class HasTransparentBounds { public static void main(String[] args) { //Die reguläre Ausdrucksform kann akzeptieren6bis10Zeichen String regex = "\\A(?=\\w{6,10}\\z)"; System.out.println("Enter 5 bis 12 Zeichen: "); String input = new Scanner(System.in).next(); //Erstellen Sie ein Musterobjekt Pattern pattern = Pattern.compile(regex); //Ein Matcher-Objekt erstellen Matcher matcher = pattern.matcher(input); //Den Bereich auf die Eingabezeichenfolge einstellen matcher.region(0, 4); matcher.useTransparentBounds(true); if(matcher.find()) { System.out.println("Treffer gefunden"); } else { System.out.println("Kein Treffer gefunden"); } boolean bool = matcher.hasTransparentBounds(); //Wechsel zu transparentem Bereich if(bool) { System.out.println("Der aktuelle Matcher verwendet transparente Grenzen"); } else { System.out.println("Der aktuelle Matcher verwendet transparente Grenzen");-transparente Grenzen"); } } }
Ausgabeergebnis
Eingeben 5 bis 12 Zeichen: sampletext Treffer gefunden Der aktuelle Matcher verwendet transparente Grenzen