Je sais que c'est une vieille question, mais pour le bénéfice des futurs auditeurs : le concept que vous recherchez est "groupes de capture". Les groupes de capture vous permettent de vous référer aux correspondances dans votre expression et de les récupérer ultérieurement, par exemple via une rétro-référence, au lieu que les chaînes soient absorbées.
À partir de la documentation, voici la syntaxe pertinente que vous devez connaître :
(?X) X, en tant que groupe de capture nommé
(?:X) X, en tant que groupe non capturant
(?idmsuxU-idmsuxU) Rien, mais active - désactive les indicateurs de correspondance i d m s u x U
(?idmsux-idmsux:X) X, en tant que groupe non capturant avec les indicateurs donnés i d m s u x activés - désactivés
(?=X) X, via un regard en avant positif de largeur nulle
(?!X) X, via un regard en avant négatif de largeur nulle
(?<=X) X, via un regard en arrière positif de largeur nulle
(?X) X, en tant que groupe indépendant et non capturant
En utilisant le texte d'entrée :
String example = "ABC DEF GHI J K";
Vous pouvez utiliser une combinaison de regard en avant positif et négatif pour combiner les espaces de fin avec chaque mot :
// Résultat : [ABC , DEF , GHI , J , K]
example.split("(?<=\\s+)(?!\\s)");
Ou vous pouvez capturer sur les limites des mots avec un regard en avant positif pour conserver les espaces comme éléments séparés et groupés :
// Résultat : [ABC, , DEF, , GHI, , J, , K]
example.split("(?=\\b)");
API de motif Java :
http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
<strong><em>Note latérale :</em></strong> Bien que la suggestion de "remplacer le texte par quelque chose de complètement improbable" soit tentante car c'est facile, ne le faites <strong><em>jamais</em></strong> dans du code de production. Cela échouera éventuellement, et cela arrive plus souvent que vous ne le pensez. J'ai débogué un centre d'appels après qu'un programmeur ait utilisé environ 80 colonnes de "~=$~=$~=$..." en pensant que c'était sûr. Cela a duré quelques mois jusqu'à ce qu'un représentant du service enregistre une "bordure fantaisie" sur ses notes avec juste cette séquence. J'ai même été témoin d'une collision MD5 authentique et aléatoire sur un serveur de recherche. Bien entendu, la collision MD5 a pris 11 ans, mais elle a quand même fait planter la recherche et le point reste le même. <strong>Les chaînes uniques ne le sont jamais. Supposez toujours que des doublons apparaîtront.</strong>