[Java] Zusammenfassung der regulären Ausdrücke

Aufführen

Muster Übereinstimmungszeichenfolge
XYZ Die Zeichenfolge XYZ
[XYZ] Ein Charakter von XYZ
[^XYZ] Ein anderes Zeichen als XYZ
[X-Z] X~Ein Buchstabe im Bereich von Y.
[a-zA-Z] Bereich von a bis z oder von A bis Z.
(X|Y|Z) Einer von XYZ
[ABC|]
X* X kommt 0 Mal oder öfter vor
("do*n"Im Falle von"dn","don","dooon"Eine solche)
X+ X kommt mehr als einmal vor
("do+n"Im Falle von"don","dooon"Eine solche)
X? X kommt 0 oder 1 Mal vor
("do?n"Im Falle von"dn"Oder"don")
X{n} X kommt n-mal vor
("do{2}n"Im Falle von"doon")
X{n,} X kommt n-mal oder öfter vor
("do{2,}n"Im Falle von"doon","doooon"Eine solche)
X{n,m} X tritt n bis m mal auf
("do{2,3}n"Im Falle von"doon"Oder"dooon")
. Beliebiger Charakter
\w Großbuchstabe/Niedrigere alphanumerische Zeichen, Unterstrich
[a-zA-Z_0-9]
\d Zahlen
[0-9]
\D Andere als Zahlen
[^0-9]
\s Leer
[ \t\n\x0B\f\r]
^ Übereinstimmung am Zeilenanfang
$ Match am Ende der Zeile
\b Wortgrenzen
\\ Match Back Slash
\n Zeilenumbruchzeichen übereinstimmen
\t Tabulatorzeichen abgleichen
^\d{10}$ 10-stellige Nummer mit halber Breite
^\d{5,10}$ Halbe Breite Nummer 5 Stellen oder mehr und 10 Stellen oder weniger
\d{2,4}-\d{2,4}-\d{4} Telefonnummer
(Halbwertsbreite Nummer 2~3 Ziffern-Halbwertsbreite Nummer 2~3 Ziffern-4 Zahlen mit halber Breite)
^\d{3}-\d{4}$ Postleitzahl
(Halbe Breite Nummer 3 Ziffern-4 Zahlen mit halber Breite)
[1]+$ Ein oder mehrere alphanumerische Zeichen halber Breite
(0-9、a-z、A-Z)

Übereinstimmendes Beispiel für Telefon- / Postleitzahl

//Beispiel 1 Telefon/Postleitzahl übereinstimmen
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
 public static void main(String[] args) {
    //Zu beurteilende Zeichenkette
    String str = "012-345-6789";
    //Generieren Sie ein zu beurteilendes Muster
    Pattern p = Pattern.compile("\\d{2,4}-\\d{2,4}-\\d{4}"); //Telefonnummer
    //Pattern p = Pattern.compile("^\\d{3}-\\d{4}$"); //Postleitzahl
    Matcher m = p.matcher(str);

    System.out.println(m.find()); //true
    }
}

Vorwärts- / Rückwärts- / Teilübereinstimmungsprobe

//Probe 2 vorwärts/Rückseite/Teilweise Übereinstimmung
public class Main {
 public static void main(String[] args) {
    //Zu beurteilende Zeichenkette
    String str = "000012-345-6789";
    //Generieren Sie ein zu beurteilendes Muster
    //Pattern p = Pattern.compile("\\d{2,4}-\\d{2,4}-\\d{4}.*"); //Präfix der Telefonnummer
    //Pattern p = Pattern.compile(".*\\d{2,4}-\\d{2,4}-\\d{4}"); //Telefonnummer Suffix übereinstimmen
    Pattern p = Pattern.compile(".*\\d{2,4}-\\d{2,4}-\\d{4}.*"); //Teilweise Übereinstimmung der Telefonnummer
    Matcher m = p.matcher(str);

    System.out.println(m.find()); //true
    }
}

Extrahieren Sie die übereinstimmende Zeichenfolge

import java.util.*;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    var str = "Mobil ist 0123-99-Es ist 0000. Zuhause ist 000-123-4567 und so weiter.";
    var ptn = Pattern.compile("(\\d{2,4})-(\\d{2,4})-(\\d{4})");
    var match = ptn.matcher(str);
    while (match.find()) {
      System.out.println("Startposition:" + match.start());
      System.out.println("Endposition:" + match.end());
      System.out.println("Passende Zeichenfolge:" + match.group());
      System.out.println("Vorwahl:" + match.group(1));
      System.out.println("Postleitzahl:" + match.group(2));
      System.out.println("Abonnentenanzahl:" + match.group(3));
      System.out.println("-----");
    }
  }
}

Verhaltenskontrolle während des Matchings

CASE_INSENSITIVE

import java.util.*;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    var str = "Für die Arbeit ist [email protected] ist com. NEKO für den privaten [email protected] ist com.";
    var ptn = Pattern.compile("[a-z0-9.!#$%&'*+/=?^_{|}~-]+@[a-z0-9-]+(\\.[a-z0-9-]+)*", Pattern.CASE_INSENSITIVE);
    var match = ptn.matcher(str);
    while (match.find()) {
      System.out.println(match.group());
    }
  }
}

MULTILINE

import java.util.*;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    var str = "Freunde in der ersten Klasse\Ich frage mich, ob n100 Leute das können\n";
    // var ptn = Pattern.compile("^\\d*");
    var ptn = Pattern.compile("^\\d*", Pattern.MULTILINE);
    var match = ptn.matcher(str);
    while (match.find()) {
      System.out.println(match.group()); //1 100
    }
  }
}

DOTALL

import java.util.*;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    var str = "Wollte sich treffen\nWollte sich treffen\nWollte sich treffen\nYES";
    // var ptn = Pattern.compile("^.+");
    var ptn = Pattern.compile("^.+", Pattern.DOTALL);
    var match = ptn.matcher(str);
    while (match.find()) {
      System.out.println(match.group());
      //Wollte sich treffen
      //Wollte sich treffen
      //Wollte sich treffen
      //YES
    }
  }
}

Eingebettete Flagge

var ptn = Pattern.compile("(?i)[a-z0-9.!#$%&'*+/=?^_{|}~-]+@[a-z0-9-]+(\\.[a-z0-9-]+)*");

//var ptn = Pattern.compile("[a-z0-9.!#$%&'*+/=?^_{|}~-]+@[a-z0-9-]+(\\.[a-z0-9-]+)*", Pattern.CASE_INSENSITIVE);

Längste Übereinstimmung / kürzeste Übereinstimmung

import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    var tags = "<p><strong>NEKO</strong>Seite? ˅<a href='index.html'><img src='cat.jpg' /></a></p>";
    //Längste Übereinstimmung
    //var ptn = Pattern.compile("<.+>"); //<p><strong>NEKO</strong>Seite? ˅<a href='index.html'><img src='cat.jpg' /></a></p>
    //Kürzeste Übereinstimmung
    var ptn = Pattern.compile("<.+?>");
    var match = ptn.matcher(tags);
    while (match.find()) {
      System.out.println(match.group());
      //<p>
      //<strong>
      //</strong>
      //<a href='index.html'>
      //<img src='cat.jpg' />
      //</a>
      //</p>
    }
  }
}

Benannter Capture

import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    var msg = "Mobil ist 0123-99-Es ist 0000. Zuhause ist 000-123-4567 und so weiter.";
    var ptn = Pattern.compile("(?<area>\\d{2,4})-(?<city>\\d{2,4})-(?<local>\\d{4})");
    var match = ptn.matcher(msg);
    while (match.find()) {
      System.out.println("Startposition:" + match.start());
      System.out.println("Endposition:" + match.end());
      System.out.println("Passende Zeichenfolge:" + match.group());
      System.out.println("Vorwahl:" + match.group("area"));
      System.out.println("Postleitzahl:" + match.group("city"));
      System.out.println("Abonnentenanzahl:" + match.group("local"));
      System.out.println("-----");
    }
  }
}

Rückverweis

import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
  //Rückverweis
  public static void main(String args[]){
    String str1 = "My name is <div>Neko</div>";
    String str2 = "I am a <span>Cat</span>";
    String str3 = "<span>Hello World</div>";
    String regex = "<(div|span)>.*?<\\/\\1>";
    Pattern p = Pattern.compile(regex);
    System.out.println("Muster: " + regex);
    check(p, str1);
    check(p, str2);
    check(p, str3);
  }
  private static void check(Pattern p, String target){
    Matcher m = p.matcher(target);

    if (m.find()){
      System.out.println("Match! " + target);
    }else{
      System.out.println("Unmatch! " + target);
    }
  }
}

Vorausschau / Vorausschau

import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {

  private static void match(Pattern ptn, String input) {
    var match = ptn.matcher(input);
    while (match.find()) {
      System.out.println(match.group());
    }
    System.out.println("---");
  }

  public static void main(String[] args) {
    var re1 = Pattern.compile("Meine(?=Ja)"); 
    var re2 = Pattern.compile("Meine(?!Ja)"); 
    var re3 = Pattern.compile("(?<=。)Meine");  
    var re4 = Pattern.compile("(?<!。)Meine"); 
    var msg1 = "Mein Ja ist eine Katze";        
    var msg2 = "Ich bin eine Katze. Mein Name ist noch nicht da.";
    match(re1, msg1); //Meine
    match(re1, msg2); //---
    match(re2, msg1); //---
    match(re2, msg2); //Meine,Meine,Meine
    match(re3, msg1); //---
    match(re3, msg2); //Meine
    match(re4, msg1); //Meine
    match(re4, msg2); //Meine,Meine
  }
}

String-Ersatz

import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {

  public static void main(String[] args) {
    var str = "Klicken Sie hier für Anfragen https://www.neko.com/ist.";
    System.out.println(str.replaceAll(
        "(?i)http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\\\w ./?%&=-]*)?",
        "<a href=\"$0\">$0</a>"));
     //Kontaktiere uns<a href="https://www.neko.com/">https://www.neko.com/</a>ist.
  }
}

String split

import java.util.regex.Pattern;
public class Main {
  //Eine oder mehrere Ziffern+Teilen mit
  public static void main(String[] args) {
    var str = "Es gibt 2 Krokodile und 22 Krokodile";
    var re = Pattern.compile("\\d{1,}Beeindruckend");
    var result = re.split(str);
    System.out.println(String.join(" ", result)); 
    //Hinten ist ein Eichhörnchen
  }
}

  1. 0-9a-zA-Z ↩︎

Recommended Posts

[Java] Zusammenfassung der regulären Ausdrücke
Nennen Sie eine Gruppe regulärer Ausdrücke (Java)
Zusammenfassung der regulären Ausdrücke von Java
Zusammenfassung der Java-Unterstützung 2018
[Java] Zusammenfassung, wie Lambda-Ausdrücke weggelassen werden
[Java11] Stream-Zusammenfassung - Vorteile von Stream -
[Java] Zusammenfassung der Operatoren (Operator)
Zusammenfassung der Grundlagen der Java-Sprache
Zusammenfassung der Java Math Klasse
[Java] Zusammenfassung der Steuerungssyntax
Zusammenfassung der Java-Fehlerverarbeitung
[Java] Zusammenfassung der Entwurfsmuster
[Java] Zusammenfassung der mathematischen Operationen
Reguläre Ausdrücke
[Java Silver] Zusammenfassung der Punkte im Zusammenhang mit Lambda-Ausdrücken
[Für Anfänger] Zusammenfassung des Java-Konstruktors
Zusammenfassung des Pakets [Java Silver Study]
Implementierung der Validierung mit regulären Ausdrücken
Zusammenfassung der objektorientierten Programmierung mit Java
Der Ursprung von Java-Lambda-Ausdrücken
[Java] Vergleichsmethode für Zeichenketten und Vergleichsmethode mit regulären Ausdrücken
Zusammenfassung der internen Rookie-Lernsitzung [Java]
Zusammenfassung des Java-Wissens
Java Generics Zusammenfassung
[java] Zusammenfassung des Umgangs mit char
Java-bezogene Zusammenfassung
Zusammenfassung anderer Änderungen als JEP von Java10
[Java] Persönliche Zusammenfassung der bedingten Anweisungen (grundlegend)
Zusammenfassung des Java 8-Dokuments
[Java] [Maven3] Zusammenfassung der Verwendung von Maven3
Reguläre Ausdrücke, die 99% der E-Mail-Adressen entsprechen
Java Zusammenfassung der häufig gesuchten Typkonvertierungen
Zusammenfassung des Java 11-Dokuments
Einfach mit regulären Java-Ausdrücken zu stolpern
[Java] Übersicht über Java
Zusammenfassung von Java Math.random und Import (Kalender)
[java] Zusammenfassung des Umgangs mit Zeichenketten
[Java] Persönliche Zusammenfassung der Klassen und Methoden (grundlegend)
Passen Sie IP-Adressen mithilfe regulärer Ausdrücke in Java an
Abgelaufene Java-Sammlung
Voraussichtliche Funktionen von Java
Zusammenfassung der neuen Funktionen von Java 12
[Java] Bedeutung der serialVersionUID
[Zusammenfassung] Zum Beispiel die Vorbereitung der Java-Umgebung
effektive Java 3. Zusammenfassung
NIO.2 Überprüfung von Java
Bewertung von Java Shilber
Zusammenfassung der OpenJDK-Quellen
Java - Vereinigung von Kommentaren
Verstehen Sie Java 8 Lambda-Ausdrücke
JAR-Datei Übersicht
Hinweise zu regulären Ausdrücken
Java statisch [Persönliche Zusammenfassung]
Geschichte der Java-Annotationen
Zusammenfassung zur Informationssicherheit
Zusammenfassung der Verwendung von FragmentArgs
Java (Verdienste des Polymorphismus)
Thread sichere Zusammenfassung ~ Java ~
Zusammenfassung der primitiven Java-Spezialisierung