(Désolé pour mon erreur antérieure du cerveau maintenant fermement engagé Er, probablement...)
Cela fonctionne:
String rex = "^\\d+\\.\\s\\p{Lu}+.*";
System.out.println("1. PTYU fmmflksfkslfsm".matches(rex));
// true
System.out.println(". PTYU fmmflksfkslfsm".matches(rex));
// false, missing leading digit
System.out.println("1.PTYU fmmflksfkslfsm".matches(rex));
// false, missing space after .
System.out.println("1. xPTYU fmmflksfkslfsm".matches(rex));
// false, lower case letter before the upper case letters
Décomposant:
^
= Démarrer de la chaîne
\d+
= Un ou plusieurs chiffres (le \
réchappés parce qu'il est dans une chaîne, donc \\
)
\.
= A .
(ou votre [.]
d'origine est très bien) littérale (encore une fois, se sont échappés dans la chaîne)
\s
= Un omble chevalier blancs (pas besoin de l'{1}
après) (je vais arrêter de mentionner les évasions maintenant)
\p{Lu}+
= Un ou plusieurs lettres majuscules (en utilisant l'échappement Unicode approprié — merci, tchrist, pour le signaler dans votre commentaire ci-dessous. En termes anglais, l'équivalent serait [A-Z]+
)
.*
= Tout le reste
Voir the documentation here pour plus de détails.
Vous avez seulement besoin du .*
à la fin si vous utilisez une méthode comme String#match
(ci-dessus) qui va essayer de correspondre à la chaîne entière.
[Correspondances pour moi] (http://regexpal.com/?flags=®ex=\\d%2B [.] \ S {1} [AZ]% 2B & input = 1.% 20PTYU% 20fmmflksfkslfsm) mais pourrait être réécrit en '^ \ d + \.\ s [A-Z] + ' –
' {1} 'est redondant: il encombre seulement l'expression et peut (doit) être supprimé en faveur de la clarté. –
En savoir plus sur Java et regex: http://www.regular-expressions.info/java.html. @AlexR et @codaddict ont tous les deux raison. Vous devez utiliser '\\' en Java pour créer un '\'. –