JavaRush /Java-Blog /Random-DE /Reguläre Ausdrücke in Java
terranum
Level 28
Milan

Reguläre Ausdrücke in Java

Veröffentlicht in der Gruppe Random-DE
RegExEin regulärer Ausdruck ist eine Art Muster, das auf Text angewendet werden kann (String, in Java). Java stellt das Paket java.util.regex zum Abgleichen regulärer Ausdrücke bereit. Reguläre Ausdrücke sind der Programmiersprache Perl sehr ähnlich und sehr einfach zu erlernen. Ein regulärer Ausdruck stimmt entweder mit dem Text (einem Teil davon) überein oder nicht. * Wenn ein regulärer Ausdruck mit einem Textstück übereinstimmt, können wir ihn finden. ** Wenn der reguläre Ausdruck zusammengesetzt ist, können wir leicht herausfinden, welcher Teil des regulären Ausdrucks mit welchem ​​Teil des Textes übereinstimmt.

Erstes Beispiel

Der reguläre Ausdruck „ [a-z] +“ gleicht alle Kleinbuchstaben im Text ab. [a-z]bedeutet jedes Zeichen von abis zeinschließlich und +bedeutet „ein oder mehrere“ Zeichen. Nehmen wir an, wir liefern die Zeichenfolge „Code 2 Learn Java Tutorial“. So machen Sie das in Java Zuerst müssen Sie eine Vorlage erstellen:
import java.util.regex.*;
Pattern p = Pattern.compile([a-z]+);
Als nächstes müssen Sie matcherden Text erstellen, indem Sie eine Nachricht an das Diagramm senden:
Matcher m = p.matcher(“code 2 learn java tutorial”);
HINWEIS: Beide haben keine Konstruktoren Pattern, Matcherwir erstellen sie mithilfe von Klassenmethoden Pattern. Pattern Class:Das Klassenobjekt stellt eine Darstellung eines regulären Ausdrucks dar. Die Pattern-Klasse stellt keine öffentlichen Konstruktoren bereit. Um eine Vorlage zu erstellen, müssen Sie zunächst eine der öffentlichen statischen Methoden aufrufen, die dann ein Objekt der Klasse zurückgeben Pattern. Diese Methoden verwenden einen regulären Ausdruck als Argument. Matcher Class:Das Finder-Objekt ist eine Engine, die das Muster interpretiert und Vergleichsvorgänge für die Eingabezeichenfolge durchführt. Wie Patterneine Klasse Matcherhat sie keine öffentlichen Konstruktoren. Sie erhalten ein Objekt Matcher, indem Sie eine Methode matcherfür ein Klassenobjekt aufrufen Pattern. Nachdem wir diese Schritte abgeschlossen haben und nun eine Instanz der Klasse haben Matcher m , können wir nun prüfen, ob das Muster gefunden wurde oder nicht, und wenn ja, an welcher Position usw. m.matches()Gibt true zurück, wenn das Muster mit der gesamten Zeichenfolge übereinstimmt, andernfalls false. m.lookingAt()Gibt true zurück, wenn das Muster mit dem Anfang der Zeichenfolge übereinstimmt, andernfalls false. m.find ()gibt true zurück, wenn das Muster mit einem beliebigen Teil des Textes übereinstimmt.
Was gibt es sonst noch zu lesen:

Java-Entwicklergruppe:

Eine Übereinstimmung finden

Nach einer erfolgreichen Übereinstimmung gibt m.start() den Index des ersten übereinstimmenden Zeichens zurück und m.end() gibt den Index des letzten übereinstimmenden Zeichens plus eins zurück. Wenn ein Versuch erfolglos war und keine Übereinstimmung gefunden wurde, m.start()wird m.end()gewürfeltIllegalStateException
  • So RuntimeExceptionmüssen Sie es nicht fangen.
Es mag seltsam erscheinen, m.end()den Index des letzten übereinstimmenden Zeichens plus eins zurückzugeben, aber genau das ist bei den meisten String.
  • Zum Beispiel,“Now is the time“.substring(m.start(), m.end())
wird die gleiche Zeichenfolge zurückgeben. Werfen wir einen Blick auf den Code:
import java.util.regex.*;

public class RegexTest {
    public static void main(String args[]) {
        String pattern = "[a-z]+";
        String text = "code 2 learn java tutorial";
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);
        while(m.find()) {
            System.out.print(text.substring(m.start(), m.end()) + "*");
        }
    }
}
Output: code*learn*java*tutorial*

Zusätzliche Methoden

Wenn es eine Übereinstimmung gibt, dann:
  • m.replaceFirst(replacement)gibt eine neue Zeichenfolge zurück, wobei die erste Teilzeichenfolge, die mit dem Muster übereinstimmt, durch ersetzt wirdreplacement
  • m.replaceAll(replacement)gibt eine neue Zeichenfolge zurück, wobei jede Teilzeichenfolge, die mit dem Muster übereinstimmt, ersetzt wird
  • m.find(StartIndex)Finden Sie die nächste Übereinstimmung beginnend am angegebenen Index
  • m.reset()setzt die Vorlage zurück
  • m.reset(NewText)Setzt den Finder zurück und gibt ihm einen neuen Text (vielleicht String, StringBufferoder CharBuffer)

Syntax für reguläre Ausdrücke

  • ^Entspricht dem Anfang einer Zeile.
  • $Entspricht dem Ende der Zeichenfolge.
  • .Entspricht jedem einzelnen Zeichen außer Newline. Die Verwendung der m-Option ermöglicht die Übereinstimmung mit einer neuen Zeile.
  • [...]Entspricht einem beliebigen einzelnen Zeichen in Klammern.
  • [^ ...]Entspricht jedem einzelnen Zeichen, das nicht in Klammern steht.
  • \AStarten Sie die gesamte Zeile.
  • \zEnde der gesamten Zeile.
  • \ZDas Ende der gesamten Zeile mit Ausnahme des letzten Zeilenabschlusszeichens.
  • re*Entspricht 0 oder mehr Vorkommen des vorhergehenden Ausdrucks.
  • re+Eine oder mehrere Übereinstimmungen mit dem vorherigen Ausdruck.
  • re?Entspricht 0 oder 1 der Position des vorherigen Ausdrucks.
  • re{n}Entspricht genau N Die Anzahl der Vorkommen des vorhergehenden Ausdrucks.
  • re{n,}Entspricht N oder mehr Vorkommen des vorhergehenden Ausdrucks.
  • re{n, m}Entspricht mindestens n und höchstens m Vorkommen des vorherigen Ausdrucks.
  • a|bEntspricht a oder b.
  • (re)Eine Gruppe regulärer Ausdrücke und das Erinnern an den gefundenen Text.
  • (?: re)Gruppen regulärer Ausdrücke, die sich den gefundenen Text nicht merken.
  • (?> re)Entspricht einem unabhängigen Muster ohne Rückgabe.
  • \wEntspricht Buchstaben und Zahlen [a-zA-Z_0-9].
  • \WDabei handelt es sich weder um Buchstaben noch um Zahlen.
  • \sEntspricht Leerzeichen. Entspricht [\t\n\r\f].
  • \SKeine Leerzeichen.
  • \dEntspricht den Zahlen. Entspricht [0-9].
  • \DStimmt nicht mit den Zahlen überein.
  • \GEntspricht dem Punkt des letzten Spiels.
  • \nEntspricht dem Zeilenumbruch.
  • \bÜbereinstimmungen an einer Wortgrenze.
  • \BEntspricht nicht einer Wortgrenze.
  • \n, \t, etc.Zeilenumbruch, Wagenrücklauf, Tabulatorzeichen usw.
  • \QZitieren Sie alle Zeichen vor \E.
  • \EDas mit \Q begonnene Zitat endet.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION