Java, regex, et les accents : p{L} ne marche pas

Phonatacid

Membre enregistré
23 Mai 2009
1
0
Bonjour, j'essaie actuellement de capturer des accents avec regex. Ce bout de code pose problème :

Bloc de code:
String texte = [COLOR=#ff0000]"aéa"[/COLOR];
Pattern p;
Matcher m;
p = Pattern.compile([COLOR=#ff0000]"[COLOR=#800000]\\[/COLOR]p{L}"[/COLOR]);
m = p.matcher(texte);
[COLOR=#0000ff]while[/COLOR] (m.find()){
            System.out.println(m.group());    
        }
m'affiche :
Bloc de code:
a
a
au lieu de
Bloc de code:
a
é
a
C'est vraisemblalement un problème d'encodage :

J'utilise TextMate pour coder ; je sauvegarde tous mes .java en utf-8.
Pour l'execution, je passe par le terminal et me sers de javac. J'ai configuré le terminal pour qu'il accepte tous les encodages, mais le problème persiste.

Que faire ?

merci les ami(e)s
 
\p{L} or \p{Letter}: any kind of letter from any language.

\p{M} or \p{Mark}: a character intended to be combined with another character (e.g. accents, umlauts, enclosing boxes, etc.).

Du coup les accents seraient plutôt dans la deuxième de ces catégories non ? Après je connaissais pas ce genre de regexp, donc je peux me tromper.
 
je viens de tester ton code dans Eclipse, et… ça marche ! Sans l'ombre d'un problème. Il donne bien "a", "é", "a". Le seul ajout a bien entendu été :
import java.util.regex.Matcher;
import java.util.regex.Pattern;
que l'on peut remplacer par import java.util.regex.*;

Je pense quand même que le problème vient donc de la configuration de ton Terminal.