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.
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.
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); } } }
single quote
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.
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); } } }
test multiple single quote words
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.
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.
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.
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!