[Java] Résumé des expressions régulières

liste

modèle Match string
XYZ La chaîne XYZ
[XYZ] Un personnage de XYZ
[^XYZ] Un caractère autre que XYZ
[X-Z] X~Une lettre dans la plage de Y
[a-zA-Z] Plage de a à z ou de A à Z
(X|Y|Z) L'un des XYZ
[ABC|]
X* X se produit 0 fois ou plus
("do*n"dans le cas de"dn","don","dooon"Tel)
X+ X se produit plus d'une fois
("do+n"dans le cas de"don","dooon"Tel)
X? X se produit 0 ou 1 fois
("do?n"dans le cas de"dn"Ou"don")
X{n} X se produit n fois
("do{2}n"dans le cas de"doon")
X{n,} X se produit n fois ou plus
("do{2,}n"dans le cas de"doon","doooon"Tel)
X{n,m} X se produit n à m fois
("do{2,3}n"dans le cas de"doon"Ou"dooon")
. N'importe quel caractère
\w lettre majuscule/Caractères alphanumériques inférieurs, trait de soulignement
[a-zA-Z_0-9]
\d Nombres
[0-9]
\D Autre que des nombres
[^0-9]
\s Vide
[ \t\n\x0B\f\r]
^ Correspondance au début d'une ligne
$ Match en fin de ligne
\b Limites de mots
\\ Match back slash
\n Faire correspondre le caractère de saut de ligne
\t Faire correspondre le caractère de tabulation
^\d{10}$ Numéro demi-largeur à 10 chiffres
^\d{5,10}$ Numéro demi-largeur 5 chiffres ou plus et 10 chiffres ou moins
\d{2,4}-\d{2,4}-\d{4} numéro de téléphone
(Numéro demi-largeur 2~3 chiffres-Numéro demi-largeur 2~3 chiffres-4 chiffres demi-largeur)
^\d{3}-\d{4}$ Code postal
(Nombre demi-largeur 3 chiffres-4 chiffres demi-largeur)
[1]+$ Un ou plusieurs caractères alphanumériques demi-largeur
(0-9、a-z、A-Z)

Exemple de correspondance téléphone / code postal

//Exemple de téléphone 1/Correspondance du code postal
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
 public static void main(String[] args) {
    //Chaîne de caractères pour juger
    String str = "012-345-6789";
    //Générer un modèle pour juger
    Pattern p = Pattern.compile("\\d{2,4}-\\d{2,4}-\\d{4}"); //numéro de téléphone
    //Pattern p = Pattern.compile("^\\d{3}-\\d{4}$"); //Code postal
    Matcher m = p.matcher(str);

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

Exemple de correspondance avant / arrière / partielle

//Échantillon 2 avant/Arrière/Match partiel
public class Main {
 public static void main(String[] args) {
    //Chaîne de caractères pour juger
    String str = "000012-345-6789";
    //Générer un modèle pour juger
    //Pattern p = Pattern.compile("\\d{2,4}-\\d{2,4}-\\d{4}.*"); //Correspondance du préfixe du numéro de téléphone
    //Pattern p = Pattern.compile(".*\\d{2,4}-\\d{2,4}-\\d{4}"); //Correspondance du suffixe du numéro de téléphone
    Pattern p = Pattern.compile(".*\\d{2,4}-\\d{2,4}-\\d{4}.*"); //Correspondance partielle du numéro de téléphone
    Matcher m = p.matcher(str);

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

Extraire la chaîne de caractères correspondante

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

public class Main {
  public static void main(String[] args) {
    var str = "Mobile est 0123-99-C'est 0000. La maison est 000-123-4567 et ainsi de suite.";
    var ptn = Pattern.compile("(\\d{2,4})-(\\d{2,4})-(\\d{4})");
    var match = ptn.matcher(str);
    while (match.find()) {
      System.out.println("Position de départ:" + match.start());
      System.out.println("Position finale:" + match.end());
      System.out.println("Chaîne correspondante:" + match.group());
      System.out.println("Indicatif régional:" + match.group(1));
      System.out.println("Code de la ville:" + match.group(2));
      System.out.println("Numéro d'adhérant:" + match.group(3));
      System.out.println("-----");
    }
  }
}

Contrôle du comportement pendant la correspondance

CASE_INSENSITIVE

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

public class Main {
  public static void main(String[] args) {
    var str = "Car le travail est [email protected]'est com. NEKO pour un usage privé@example.C'est 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 = "Amis en première année\Je me demande si 100 personnes peuvent le faire\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 = "Voulait se rencontrer\nVoulait se rencontrer\nVoulait se rencontrer\nYES";
    // var ptn = Pattern.compile("^.+");
    var ptn = Pattern.compile("^.+", Pattern.DOTALL);
    var match = ptn.matcher(str);
    while (match.find()) {
      System.out.println(match.group());
      //Voulait se rencontrer
      //Voulait se rencontrer
      //Voulait se rencontrer
      //YES
    }
  }
}

Drapeau intégré

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);

Match le plus long / match le plus court

import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    var tags = "<p><strong>NEKO</strong>site<a href='index.html'><img src='cat.jpg' /></a></p>";
    //Match le plus long
    //var ptn = Pattern.compile("<.+>"); //<p><strong>NEKO</strong>site<a href='index.html'><img src='cat.jpg' /></a></p>
    //Match le plus court
    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>
    }
  }
}

Capture nommée

import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    var msg = "Mobile est 0123-99-C'est 0000. La maison est 000-123-4567 et ainsi de suite.";
    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("Position de départ:" + match.start());
      System.out.println("Position finale:" + match.end());
      System.out.println("Chaîne correspondante:" + match.group());
      System.out.println("Indicatif régional:" + match.group("area"));
      System.out.println("Code de la ville:" + match.group("city"));
      System.out.println("Numéro d'adhérant:" + match.group("local"));
      System.out.println("-----");
    }
  }
}

Retour référence

import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
  //Retour référence
  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("modèle: " + 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);
    }
  }
}

Look-ahead / look-ahead

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("ma(?=Oui)"); 
    var re2 = Pattern.compile("ma(?!Oui)"); 
    var re3 = Pattern.compile("(?<=。)ma");  
    var re4 = Pattern.compile("(?<!。)ma"); 
    var msg1 = "Mon oui est un chat";        
    var msg2 = "Je suis un chat. Mon nom n'y est pas encore.";
    match(re1, msg1); //ma
    match(re1, msg2); //---
    match(re2, msg1); //---
    match(re2, msg2); //ma,ma,ma
    match(re3, msg1); //---
    match(re3, msg2); //ma
    match(re4, msg1); //ma
    match(re4, msg2); //ma,ma
  }
}

Remplacement de la chaîne

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

  public static void main(String[] args) {
    var str = "Cliquez ici pour les demandes de renseignements https://www.neko.com/est.";
    System.out.println(str.replaceAll(
        "(?i)http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\\\w ./?%&=-]*)?",
        "<a href=\"$0\">$0</a>"));
     //Nous contacter<a href="https://www.neko.com/">https://www.neko.com/</a>est.
  }
}

Division de chaîne

import java.util.regex.Pattern;
public class Main {
  //Un ou plusieurs chiffres+Split avec
  public static void main(String[] args) {
    var str = "Il y a 2 crocodiles et 22 crocodiles";
    var re = Pattern.compile("\\d{1,}sensationnel");
    var result = re.split(str);
    System.out.println(String.join(" ", result)); 
    //Il y a un écureuil dans le dos
  }
}

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

Recommended Posts

[Java] Résumé des expressions régulières
Nommer un groupe d'expressions régulières (Java)
résumé des expressions régulières java
Résumé du support Java 2018
[Java] Résumé de la façon d'omettre les expressions lambda
[Java11] Résumé du flux -Avantages du flux-
[Java] Résumé des opérateurs (opérateur)
Résumé des bases du langage Java
Résumé de la classe Java Math
[Java] Résumé de la syntaxe de contrôle
Résumé du traitement des erreurs Java
[Java] Résumé des modèles de conception
[Java] Résumé des opérations mathématiques
Expressions régulières
[Java Silver] Résumé des points liés aux expressions lambda
[Pour les débutants] Résumé du constructeur java
Résumé du package [Java Silver Study]
Implémentation de la validation à l'aide d'expressions régulières
Résumé de la programmation orientée objet utilisant Java
L'origine des expressions Java lambda
[Java] Méthode de comparaison de chaînes de caractères et méthode de comparaison utilisant des expressions régulières
Résumé de la session d’étude interne des recrues [Java]
Résumé des connaissances Java
Résumé des génériques Java
[java] Résumé de la gestion des caractères
Résumé relatif à Java
Récapitulatif des modifications autres que JEP de Java10
[Java] Résumé personnel des instructions conditionnelles (basique)
Résumé du document Java 8
[Java] [Maven3] Résumé de l'utilisation de Maven3
Expressions régulières qui correspondent à 99% des adresses e-mail
Résumé Java des conversions de types fréquemment recherchées
Résumé du document Java 11
Facile à parcourir avec les expressions régulières Java
[Java] Présentation de Java
Résumé de Java Math.random et import (calendrier)
[java] Résumé de la gestion des chaînes de caractères
[Java] Résumé personnel des classes et méthodes (basique)
Faire correspondre les adresses IP à l'aide d'expressions régulières en Java
Collection expirée de java
Caractéristiques prévues de Java
Résumé des nouvelles fonctionnalités de Java 12
[Java] Importance de serialVersionUID
[Résumé] Par exemple, préparation de l'environnement Java
3ème résumé efficace de Java
NIO.2 examen de Java
Avis sur Java Shilber
Résumé des sources OpenJDK
java --Unification des commentaires
Comprendre les expressions lambda Java 8
vue d'ensemble du fichier jar
Notes sur les expressions régulières
Java statique [Résumé personnel]
Histoire des annotations Java
Résumé sur la sécurité de l'information
Résumé de l'utilisation de FragmentArgs
java (mérites du polymorphisme)
Résumé des threads sûrs ~ Java ~
Résumé de la spécialisation des primitives Java