Quel modèle regex serait nécessaire de passer à la méthode java.lang.String.split() pour fractionner une chaîne contenant tous les caractères d’espace blanc (' ', « \t », « \n », etc.) comme des séparateurs ?
Réponses
Trop de publicités?Quelque chose dans les lignes de
myString.split("\\s+");
ce groupe a pour tous les espaces comme un séparateur... donc, si j'ai de la chaîne "Hello[espace][tab]Monde", ce qui devrait produire les chaînes de caractères "Bonjour" et "Monde" et omettre l'espace vide entre l'espace et la tabulation.
Comme VonC souligné, la barre oblique inverse devrait être échappé, parce que Java serait d'abord essayer d'échapper à la chaîne d'un caractère spécial, et envoyer que pour être analysé. Ce que vous voulez, c'est le littéral "\s", ce qui signifie, vous avez besoin de passer "\\s". Il peut être un peu déroutant.
L' \\s
est équivalent à [ \\t\\n\\x0B\\f\\r]
Dans la plupart des regex dialectes, il y a un ensemble de pratiques à caractère résumés que vous pouvez utiliser pour ce genre de chose - ces sont bonnes à rappeler:
\w - Correspond à tout caractère de mot.
\W - Correspond à n'importe quel nonword caractère.
\s Correspond à tout caractère d'espace blanc.
\S Correspond à rien, mais des espaces blancs.
\d Correspond à un chiffre.
\D Correspond à rien, sauf les chiffres.
Une recherche pour "Regex Cheatsheets" devrait vous récompenser avec un tas d'utiles synthèses.