Maison > Java > javaDidacticiel > Comment diviser une chaîne par espaces, en ignorant les espaces entre guillemets ?

Comment diviser une chaîne par espaces, en ignorant les espaces entre guillemets ?

Mary-Kate Olsen
Libérer: 2024-12-16 02:07:09
original
655 Les gens l'ont consulté

How to Split a String by Spaces, Ignoring Spaces Within Quotes?

Diviser des chaînes avec des espaces non entourés de guillemets

Dans ce contexte, nous cherchons une solution pour diviser une chaîne en composants à l'aide d'espaces qui sont non entouré de guillemets simples ou doubles. Il s'agit d'une tâche nuancée qui nécessite une conception minutieuse des regex.

Une solution efficace consiste à construire une regex qui capture deux types d'éléments :

  1. Chaînes citées : Séquences de caractères entourés de guillemets simples ou doubles, sans guillemets internes.
  2. Non cité Mots : Séquences de caractères ne contenant pas d'espaces ni de guillemets.

Pour faire correspondre ces éléments, nous pouvons utiliser la regex suivante :

[^\s"']+|"([^"]*)"|'([^']*)'
Copier après la connexion

Dans cette regex :

  • [^\s"'] : Correspondances non citées mots.
  • |"([^"]*)"| : correspond aux chaînes entre guillemets doubles, à l'exclusion des guillemets.
  • |'([^']*)'| : correspond aux mots simples. -chaînes entre guillemets, à l'exclusion des guillemets.

En implémentant cette solution en Java, nous pouvons utiliser les éléments suivants code :

Pattern regex = Pattern.compile("[^\s\"']+|\"([^\"]*)\"|'([^']*)'");
Matcher regexMatcher = regex.matcher(subjectString);

List<String> matchList = new ArrayList<>();
while (regexMatcher.find()) {
    if (regexMatcher.group(1) != null) {
        // Double-quoted string without quotes
        matchList.add(regexMatcher.group(1));
    } else if (regexMatcher.group(2) != null) {
        // Single-quoted string without quotes
        matchList.add(regexMatcher.group(2));
    } else {
        // Unquoted word
        matchList.add(regexMatcher.group());
    }
}
Copier après la connexion

Cette approche capture habilement les deux types d'éléments, fournissant une solution robuste au problème donné.

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:php.cn
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