Heim  >  Artikel  >  Java  >  Detaillierte Erklärung und Verwendung: Analyse regulärer Java-Ausdrücke

Detaillierte Erklärung und Verwendung: Analyse regulärer Java-Ausdrücke

WBOY
WBOYOriginal
2024-01-09 10:54:331043Durchsuche

Detaillierte Erklärung und Verwendung: Analyse regulärer Java-Ausdrücke

Detaillierte Erklärung und Verwendung regulärer Java-Ausdrücke

Regulärer Ausdruck (Regulärer Ausdruck) ist ein leistungsstarkes Textverarbeitungstool, das in verschiedenen Programmiersprachen weit verbreitet ist. In Java können wir reguläre Ausdrücke verwenden, um Zeichenfolgenabgleich, Ersetzung, Aufteilung und andere Vorgänge durchzuführen. In diesem Artikel wird die Verwendung regulärer Java-Ausdrücke ausführlich vorgestellt und spezifische Codebeispiele gegeben.

  1. Syntax für reguläre Ausdrücke

Die Syntax für reguläre Ausdrücke von Java stimmt mit der Standardsyntax für reguläre Ausdrücke überein. Hier sind einige häufig verwendete Metazeichen für reguläre Ausdrücke und ihre Bedeutung:

  • d: Entspricht einer beliebigen Zahl.
  • D: Entspricht einem beliebigen nicht numerischen Zeichen.
  • w: Entspricht jedem Buchstaben, jeder Zahl oder jedem Unterstrich.
  • W: Entspricht allen Zeichen, die keine Buchstaben, Zahlen oder Unterstriche sind.
  • s: Entspricht jedem Leerzeichen, einschließlich Leerzeichen, Tabulator, Zeilenumbruch usw.
  • S: Entspricht jedem Zeichen, das kein Leerzeichen ist.
  • : Passen Sie eine Wortgrenze an.
  • ^: Passen Sie die Startposition der Zeichenfolge an.
  • $: Passen Sie die Endposition der Zeichenfolge an.
  • .: Passt zu einem beliebigen Zeichen.
  • *: Übereinstimmung mit null oder mehr vorherigen Elementen.
  • +: Übereinstimmung mit einem oder mehreren vorherigen Elementen.
  • ?: Übereinstimmung mit null oder einem vorherigen Element.
  • {n}: Passt genau n-mal zum vorherigen Element.
  • {n,}: Entspricht dem vorherigen Element mindestens n-mal.
  • {n,m}: Übereinstimmung mit dem vorherigen Element mindestens n-mal und höchstens m-mal.
  • [...]: Entspricht einem beliebigen Zeichen in den eckigen Klammern.
  • 1: Entspricht jedem Zeichen außer den Zeichen in eckigen Klammern.

Es gibt viele weitere Metazeichen und Grammatikregeln, die je nach Bedarf flexibel eingesetzt werden können.

  1. Pattern-Klasse

In Java ist die Pattern-Klasse eine kompilierte Darstellung eines regulären Ausdrucks. Wir können die Zeichenfolge des regulären Ausdrucks kompilieren und ein Pattern-Objekt über die statische Methode compile() generieren, die von der Pattern-Klasse bereitgestellt wird. Zum Beispiel: compile()来编译正则表达式字符串,生成一个Pattern对象。例如:

String regex = "\d+";
Pattern pattern = Pattern.compile(regex);
  1. Matcher类

Matcher类是所有正则表达式匹配操作的引擎。我们可以通过Pattern对象的matcher()方法来创建一个Matcher对象。

  • matches()方法:用于测试正则表达式是否匹配整个字符串。例如:
String regex = "hello";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("hello world");
boolean matched = matcher.matches();
System.out.println(matched); // 输出:true
  • find()方法:用于查找字符串中与正则表达式匹配的子序列。例如:
String regex = "\d+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("abc123def");
while (matcher.find()) {
    System.out.println(matcher.group());
}

以上代码输出结果为:

123
  • replaceAll()
    String regex = "\btom\b";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher("I love tom and tom loves me");
    String result = matcher.replaceAll("Jerry");
    System.out.println(result); // 输出:I love Jerry and Jerry loves me
    1. Matcher-Klasse
    1. Die Matcher-Klasse ist die Engine für alle regulären Ausdrucksvergleichsvorgänge. Wir können ein Matcher-Objekt über die Methode matcher() des Pattern-Objekts erstellen.

    matches()-Methode: Wird verwendet, um zu testen, ob der reguläre Ausdruck mit der gesamten Zeichenfolge übereinstimmt. Zum Beispiel:

      String regex = "^1[3-9]\d{9}$";
      Pattern pattern = Pattern.compile(regex);
      String phone = "13612345678";
      boolean isValid = pattern.matcher(phone).matches();
      System.out.println(isValid); // 输出:true
    • find()-Methode: Wird verwendet, um Teilsequenzen in einer Zeichenfolge zu finden, die regulären Ausdrücken entsprechen. Zum Beispiel:
      String regex = "<a\s.*?href="([^"]+)".*?>";
      Pattern pattern = Pattern.compile(regex);
      String html = "<a href="http://www.example.com">Example</a>";
      Matcher matcher = pattern.matcher(html);
      while (matcher.find()) {
          System.out.println(matcher.group(1));
      }
    • Das Ausgabeergebnis des obigen Codes ist:
    • http://www.example.com

    replaceAll()-Methode: Wird verwendet, um den Teil der Zeichenfolge zu ersetzen, der dem regulären Ausdruck entspricht. Zum Beispiel:

      String regex = "\b\w+\b";
      Pattern pattern = Pattern.compile(regex);
      String text = "Hello world, I love Java!";
      Matcher matcher = pattern.matcher(text);
      List<String> words = new ArrayList<>();
      while (matcher.find()) {
          words.add(matcher.group());
      }
      System.out.println(words);
    • Spezifische Beispiele

    Im Folgenden sind einige häufige Szenarien für die Verwendung regulärer Ausdrücke und entsprechender Codebeispiele aufgeführt:


    Überprüfen Sie, ob die Mobiltelefonnummer legal ist:
      [Hello, world, I, love, Java]
    1. Extrahieren Sie Links im HTML-Text :
    2. rrreee
    Das Ausgabeergebnis des obigen Codes ist: 🎜rrreee🎜🎜Teilen Sie die Zeichenfolge in eine Wortliste auf: 🎜🎜rrreee🎜Das Ausgabeergebnis des obigen Codes ist: 🎜rrreee🎜Zusammenfassung: 🎜Dieser Artikel stellt die Verwendung vor der regulären Java-Ausdrücke im Detail und es werden spezifische Codebeispiele gegeben. Durch das Erlernen der Syntax regulärer Ausdrücke und der Verwendung der Klassen Pattern und Matcher können wir reguläre Ausdrücke flexibel zur Verarbeitung von Zeichenfolgen verwenden. Ich hoffe, dieser Artikel kann Ihnen helfen, reguläre Java-Ausdrücke zu verstehen und zu verwenden. 🎜🎜🎜🎜... 🎜↩🎜🎜🎜

    Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung und Verwendung: Analyse regulärer Java-Ausdrücke. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn