Maison > Java > javaDidacticiel > le corps du texte

Programme Java pour extraire une chaîne entourée de guillemets simples d'une chaîne plus grande à l'aide d'expressions régulières

PHPz
Libérer: 2023-09-16 16:41:02
avant
1032 Les gens l'ont consulté

Programme Java pour extraire une chaîne entourée de guillemets simples dune chaîne plus grande à laide dexpressions régulières

Les expressions régulières ou expressions régulières sont un langage utilisé pour la correspondance de modèles et la manipulation de chaînes. Il consiste en une séquence de caractères qui définit un modèle de recherche et peut être utilisé pour effectuer des opérations telles que la recherche, le remplacement et même la validation de la saisie de texte. Les expressions régulières consistent en une séquence de caractères et de symboles qui forment un modèle de recherche.

Dans cet article, nous allons apprendre à écrire un programme Java pour extraire une chaîne entre guillemets simples d'une chaîne plus grande à l'aide d'expressions régulières.

Java prend en charge les expressions régulières via le package java.util.regex. Les classes de modèles représentent des expressions régulières compilées, tandis que les classes matcher peuvent être utilisées pour faire correspondre des modèles à une chaîne d'entrée donnée.

Une seule sous-chaîne entourée de guillemets simples

Dans l'exemple ci-dessous, nous définirons d'abord la chaîne d'entrée et le modèle d'expression régulière auquel nous souhaitons faire correspondre. Le modèle "(_+?)" correspond à n'importe quelle séquence de caractères entourée de guillemets simples et de la partie _*?. Correspond à n'importe quel caractère 0 fois ou plus, mais aussi peu de fois que possible afin que le reste du motif corresponde.

Nous créons ensuite un objet Matcher basé sur le modèle à appliquer à la chaîne d'entrée à l'aide de la méthode find. Si le modèle correspond, nous extrayons la chaîne correspondante à l'aide de la méthode group() avec le paramètre 1, qui représente le premier groupe de capture dans le modèle. L’inconvénient de cette méthode est qu’elle ne capture pas tous les groupes de sous-chaînes entre guillemets simples.

Exemple

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringExtractor {
   public static void main(String[] args) {
      String input = "This is a 'single quote' enclosed string";
      Pattern pattern = Pattern.compile("'(.*?)'");
      Matcher matcher = pattern.matcher(input);
        
      if (matcher.find()) {
         String extractedString = matcher.group(1);
         System.out.println(extractedString);
      }
   }
}
Copier après la connexion

Sortie

single quote
Copier après la connexion

Plusieurs sous-chaînes entourées de guillemets simples

La méthode ci-dessus présente un inconvénient majeur, à savoir qu'il est trop simple d'extraire plusieurs sous-chaînes entre guillemets simples de la chaîne d'entrée et d'extraire uniquement la première occurrence. Il s'agit d'une version mise à jour et avancée de la méthode précédente car elle est capable d'extraire plusieurs événements. Nous utilisons une boucle while pour itérer et continuer à rechercher des correspondances jusqu'à ce qu'il n'y ait plus de correspondances dans la chaîne d'entrée. Une liste de correspondances est utilisée pour stocker toutes les chaînes extraites et est renvoyée par cette méthode. La méthode principale montre comment utiliser la méthode extractStringsWithRegex() mise à jour pour extraire toutes les chaînes entre guillemets simples.

Exemple

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.ArrayList;
import java.util.List;
public class StringExtractor {    
   public static List<String> extractStringsWithRegex(String input) {
      // This function takes string as input, iterates over to search for regex matches
      // and stores them in a List named matches which is finally returned in the end
      Pattern pattern = Pattern.compile("'(.*?)'");
      Matcher matcher = pattern.matcher(input);
      List<String> matches = new ArrayList<>();
      while (matcher.find()) {
         matches.add(matcher.group(1));
      }
      return matches;
   }   
   public static void main(String[] args) {
      String input = "This is a 'test' string with 'multiple' 'single quote' enclosed 'words'";
      List<String> matches = extractStringsWithRegex(input);
      for (String match : matches) {
         System.out.println(match);
      }
   }
}
Copier après la connexion

Sortie

test
multiple
single quote
words
Copier après la connexion

Le programme Java présente certains avantages et inconvénients pour extraire une chaîne entre guillemets simples d'une chaîne plus grande à l'aide d'expressions régulières, comme indiqué ci-dessous.

Avantages

  • Les expressions régulières sont très puissantes et peuvent correspondre à des chaînes entourées de guillemets simples ou à des modèles encore plus complexes.

  • La classe Matcher nous fournit des méthodes supplémentaires pour gérer les chaînes correspondantes, telles que trouver l'index de début et de fin d'une correspondance.

Inconvénients

  • Les expressions régulières peuvent être plus difficiles à écrire et à comprendre que les autres méthodes.

  • Les expressions régulières peuvent être plus lentes que d'autres méthodes, en particulier pour les grandes chaînes d'entrée ou les modèles complexes.

Conclusion

Il existe différentes méthodes pour extraire une chaîne entourée de guillemets simples, mais les méthodes les plus courantes utilisent des expressions régulières, des méthodes split() et substring(). Les expressions régulières sont des options puissantes et flexibles car elles peuvent gérer des modèles complexes, mais peuvent prendre beaucoup de temps sur de très grandes chaînes. Lors de l'utilisation d'expressions régulières, la classe Pattern est utilisée pour représenter le modèle et la classe Matcher est utilisée pour appliquer le modèle à la chaîne d'entrée, puis extraire le texte correspondant. Les expressions régulières ont une variété de cas d'utilisation, de la validation des données saisies par l'utilisateur à la manipulation de texte. Chaque fois que vous travaillez avec des expressions régulières, il est important de concevoir et de tester soigneusement le modèle pour vous assurer qu'il correspond au texte requis et qu'il gère bien tous les cas extrêmes possibles.

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:tutorialspoint.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal