Dans une expression régulière, il est possible de diviser une chaîne à l'aide d'espaces tout en conservant les espaces dans les sections entre guillemets. Voici comment y parvenir :
Pour résoudre le problème dans votre expression originale, (?!"), qui se divise en espaces avant les guillemets, considérez l'expression régulière suivante :
[^\s"']+|"([^"]*)"|'([^']*)'
Ceci l'expression capture trois modèles :
Pour diviser la chaîne, vous pouvez utiliser du code Java comme ceci :
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 crée une liste de chaînes, supprimant les guillemets des mots cités et préservant les espaces à l'intérieur de ceux-ci.
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!