Maison > Java > javaDidacticiel > Regex pour un ingénieur logiciel Java

Regex pour un ingénieur logiciel Java

Mary-Kate Olsen
Libérer: 2024-11-01 01:52:28
original
490 Les gens l'ont consulté

Regex for a Java Software Engineer

Pourquoi ai-je besoin de Regex ?

Les expressions régulières sont des modèles qui nous aident à rechercher des séquences spécifiques dans un texte. En Java, ils sont utilisés avec les classes du package java.util.regex.
Avec regex, nous pouvons trouver des modèles, remplacer du texte et valider les entrées sans ajouter trop de code.

Syntaxe de base

Passons en revue quelques symboles regex courants et ce qu'ils font :

  1. Caractères littéraux : L'expression régulière la plus simple est simplement du texte brut. bonjour correspond à toute occurrence de bonjour dans une chaîne.

  2. Caractères génériques :
    .: Correspond à n'importe quel caractère (h.llo correspond à hello, hallo, hxllo).

  3. Ensembles de caractères :
    [abc] : correspond à n'importe quel caractère entre parenthèses (h[aeiou]llo correspond à bonjour, bonjour).
    [a-z] : correspond à n'importe quelle lettre minuscule de a à z.

  4. Quantificateurs :
    * : correspond à zéro ou plusieurs occurrences de la lettre derrière elle (go*gle correspond à google, ggle, goooooooogle).
    : Correspond à une ou plusieurs occurrences (go gle correspond à google, gooogle mais pas ggle).
    ? : correspond à zéro ou à une occurrence de la lettre derrière elle (la couleur correspond à la fois à la couleur et à la couleur).

  5. Ancres :
    ^ : Indique le début d'une ligne (^hello correspond à toute ligne commençant par bonjour).
    $ : indique la fin d'une ligne (world$ correspond à toute ligne se terminant par world).

  6. Groupes :
    (abc) : regroupe plusieurs caractères en une seule unité ((ha) correspond à ha, haha, hahaha).

  7. Caractères d'échappement :
    Certains caractères (comme . ou *) ont une signification particulière, alors préfixez-les avec une barre oblique inverse pour les utiliser littéralement. Par exemple, . correspondra à un point littéral.

Exemple court :

Pattern : compile l'expression régulière et la fait correspondre dans un texte.
Matcher : applique le modèle à un texte spécifique et aide à trouver des correspondances.

Voici un exemple rapide de la façon dont ces classes fonctionnent ensemble :

importer java.util.regex.*;

import java.util.regex.*;

public class RegexBasicsDemo {
    public static void main(String[] args) {
        String text = "hxllo hallo hbllllllo hello";
        Pattern pattern = Pattern.compile("h.llo");
        Matcher matcher = pattern.matcher(text);
        while (matcher.find()) {
            System.out.println("Wildcard match found: " + matcher.group());
        }
   }
}
Copier après la connexion

Ce qui sera imprimé :

  • Correspondance générique trouvée : hxllo
  • Correspondance générique trouvée : bonjour
  • Correspondance générique trouvée : bonjour
import java.util.regex.*;

public class RegexReplaceExample {
    public static void main(String[] args) {

        String text = "hello hzllo hallo hillo";
        Pattern pattern = Pattern.compile("h[aeiou]llo");
        Matcher matcher = pattern.matcher(text);

        String result = matcher.replaceAll("hi");

        System.out.println("Original text: " + text);
        System.out.println("Text after replacement: " + result);
    }
}
Copier après la connexion

Ce qui sera imprimé :

  • Texte original : bonjour hzllo bonjour hillo
  • Texte après remplacement : salut hzllo salut salut

Méthodes Java Regex utiles

  • matches() : Vérifie si tout le texte correspond au modèle regex.
  • find() : recherche les occurrences du modèle dans le texte (renvoie vrai si, et seulement si, une sous-séquence de la séquence d'entrée correspond au modèle de ce correspondant)
  • group() : renvoie le texte correspondant après avoir appelé find().
  • replaceAll() : remplace les correspondances dans le texte par une chaîne de remplacement

Mon avis sur les regex

En tant que développeur Java, j'en suis venu à vraiment apprécier les regex pour leur puissance avec le traitement de texte. Il est étonnant de voir comment une ligne d’expression régulière bien conçue peut gérer des tâches qui autrement nécessiteraient un bloc entier de code. Pour une correspondance simple, l'expression régulière est parfaite : elle est concise, efficace et idéale pour des choses comme la validation de formats ou l'extraction de modèles.

Mais je sais que tout le monde ne ressent pas la même chose. Les expressions rationnelles peuvent être loin d’être intuitives, et lorsque les modèles commencent à devenir complexes, la lisibilité en souffre. Il est facile de créer des modèles qui fonctionnent comme par magie, mais qu’il est presque impossible à quiconque (ou même à vous-même, plus tard, après votre retour de belles vacances) de comprendre en un coup d’œil. Les modèles complexes peuvent rapidement devenir du code « en écriture seule ».

Dans ces situations, j'ai trouvé préférable de diviser la validation en étapes plus petites et plus simples. Cela rend les choses plus claires et permet aux autres de suivre plus facilement la logique. Bien que les expressions régulières soient un outil très précieux en Java, je pense qu’il est préférable de l’utiliser avec un peu de retenue, en particulier dans les environnements d’équipe. Après tout, écrire du code maintenable signifie penser à la prochaine personne qui le lira.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal