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



## Phonatacid (23 Mai 2009)

Bonjour, j'essaie actuellement de capturer des accents avec regex. Ce bout de code pose problème :


```
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 :

```
a
a
```
au lieu de 

```
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


----------



## grumff (24 Mai 2009)

> \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.


----------



## jacquemin (31 Mai 2009)

je viens de tester ton code dans Eclipse, et&#8230; ç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.


----------

