regex : capture d'accents - \p{L} ne marche pas
Bonjour à tous,
J'essaie actuellement de capturer des mots avec accents.
Voici le code sur lequel je fais mes test :
Code:
1 2 3 4 5 6 7 8 9
|
String texte = "aéa";
Pattern p;
Matcher m;
p = Pattern.compile("\\p{L}");
m = p.matcher(texte);
while (m.find()){
System.out.println(m.group());
} |
avec ceci, la console me retourne
"é" ne fait-il pas aussi parti de la classe de caractères définis par \p{L} (que l'on peut aussi écrire \pL si je ne m'abuse) ?
si je remplace mon pattern par :
Code:
p = Pattern.compile("é");
j'obtiens (ca fonctionne) :
par contre si je remplace mon pattern par :
Citation:
p = Pattern.compile("[\\wé]");
J'obtiens
En note finale, je précise que j'utilise TextMate pour coder en java et que je sauvegarde mes .java en UTF-8.
Quant à la console que j'utilise (le Terminal fourni dans OSX (oui oui je suis sous mac), elle accepte entre autres comme encodages,
UTF8, MAC OS Roman, ISO Latin 1, ISO Latin 9, Windows Latin 1, et bien sur ASCII (+bien d'autres).
Où est le blem ?
edit : si je remplace
Code:
String texte = "aéa";
par
Code:
String texte = "aÉa";
j'obtiens avec le pattern "\\p{L}" :