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 :
Pour faire correspondre ces éléments, nous pouvons utiliser la regex suivante :
[^\s"']+|"([^"]*)"|'([^']*)'
Dans cette regex :
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()); } }
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!