Diviser des chaînes avec des espaces excluant les segments entre guillemets
Dans le domaine des expressions régulières, la tâche de diviser une chaîne en espaces tout en préservant les segments entre guillemets peut être intimidant pour les utilisateurs novices. Pour relever ce défi, nous recherchons une solution robuste qui sépare avec précision notre chaîne d'entrée en ses éléments constitutifs.
L'exemple de chaîne fourni présente un cas spécifique où des espaces délimitent les mots, mais pas dans des segments entre guillemets simples ou doubles. Le résultat souhaité conserve ces segments cités, garantissant que les expressions telles que « sera » ou « expression régulière » restent intactes.
Une expression régulière appropriée pour cette tâche est étonnamment simple :
[^\s"']+|"([^"]*)"|'([^']*)'
Décomposer cette expression :
Pour utiliser cette expression en Java, nous pouvons utiliser ce qui suit code :
List<String> matchList = new ArrayList<>(); Pattern regex = Pattern.compile("[^\s\"']+|\"([^\"]*)\"|'([^']*)'"); Matcher regexMatcher = regex.matcher(subjectString); while (regexMatcher.find()) { if (regexMatcher.group(1) != null) { // Add double-quoted string without the quotes matchList.add(regexMatcher.group(1)); } else if (regexMatcher.group(2) != null) { // Add single-quoted string without the quotes matchList.add(regexMatcher.group(2)); } else { // Add unquoted word matchList.add(regexMatcher.group()); } }
Ce code parcourt la chaîne d'entrée, capturant les segments entre guillemets et sans guillemets, ce qui donne une liste des éléments divisés. Alternativement, nous pouvons utiliser une version plus simple :
List<String> matchList = new ArrayList<>(); Pattern regex = Pattern.compile("[^\s\"']+|\"[^\"]*\"|'[^']*'"); Matcher regexMatcher = regex.matcher(subjectString); while (regexMatcher.find()) { matchList.add(regexMatcher.group()); }
Cette version simplifiée inclut à la fois des éléments entre guillemets et non cités dans la liste.
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!