classe Pattern en utilisation internationale. [résoudu]

classe Pattern en utilisation internationale. [résoudu] - Java - Programmation

Marsh Posté le 17-02-2003 à 15:58:46    

'lut,
 
j'utilise la classe java.util.regex.Pattern avec succès la plupart du temps mais là je coince sur un cas particulier.
 
je désire détecter des patterns en mode word; càd que je ne m'intéresse qu'aux mots pouvant répondre à ces patterns: "riz" par exemple doit détecter le mot "riz" et pas le groupe de lettres r-i-z dans "rizière".
 
j'utilise pour cela le Word Boundary "\b" de la catégorie Boundary Matcher (Javadoc de Pattern) ce qui donne: "\briz\b"
 
ça marche plutôt bien mais en apparemment , en anglais le caractère '-' est considéré comme un caractère séparateur de mots... pas en français.
 
si je veux remplacer "toto" par "bidule" dans la phrase "titi-toto toto", je vais obtenir "titi-bidule bidule"... ce qui n'est pas correct pour mon programme.
 
en effet, je voudrais qu'il ne me détecte pas le premier "toto" et je voudrais donc obtenir: "titi-toto bidule"
 
ma question: comment faire pour internationaliser la classe Pattern ? je cherchais un moyen de spécifier la localisation mais sans succès...
 
question subsidiaire: si il n'y a pas moyen d'internationaliser Pattern, comment puis-je faire pour retirer le '-' de la classe de détection "\b"
 
pour être complet, avant de découvrir "\b", j'utilisais " ,;:.!\?'\(\)" ce qui fonctionnait assez bien (malgré une bidouille nécessaire).
 
j'utilise depuis "\b" car il réagit beaucoup mieux aux bords des chaînes de caractères et m'évite des entorses de code.
 
qq'un peut-il m'aider ?


Message édité par TBone le 19-02-2003 à 16:50:00

---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 17-02-2003 à 15:58:46   

Reply

Marsh Posté le 17-02-2003 à 16:15:48    

Ouvre un bug dans la BugParade de Sun ?

Reply

Marsh Posté le 17-02-2003 à 16:34:15    

tu fais bien "\\b" hein?
 
sinon ben peut etre qqchose comme
"[\t\n\r]toto[\t\n\r]"
(mais je suis une brele en regex :ange:)
 
edit: euh ouais j'ai relu ton post, oublie ma proposition  :ange:


Message édité par --greg-- le 17-02-2003 à 16:34:46

---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 17-02-2003 à 16:37:25    

"[\b^-]toto[\b^-]" ? :)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 17-02-2003 à 16:39:14    

BifaceMcLeOD a écrit :

Ouvre un bug dans la BugParade de Sun ?


je n'y pensais pas mais maintenat que tu le dis, je me demande si je suis assez "qualifié" pour me permettre de lister un bug chez Sun...  :sweat:  
 
j'vais en tout cas aller voir si ce bug n'est pas encore remonté.
 
:jap:


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 17-02-2003 à 16:40:34    

--greg-- a écrit :

"[\b^-]toto[\b^-]" ? :)


j'avais essayé [\b-] et ça merdouillait.
le temps de lancer le brol et je reposte.
 
:jap:


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 17-02-2003 à 16:45:51    

dans une doc/resumé des regex que j'ai ça dit  
 
 

Citation :

\b Boundary This matches a word boundary, either a beginning \w character, an ending \w character, or one of these two sequences: \w\W, \W\w.

 
 
et pour "\w"
 

Citation :

\w Bracket A word character, essentially the same as [a-zA-Z_0-9]

 
 
ce qui laisse entendre que tout autre char qu'une lettre, un chiffre ou le "_" doit etre considéré comme separateur de mot... je sais pas si on peut incriminer java sur ce coup là, vu que ça vient de la "norme" regex (perl ou autre.??)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 17-02-2003 à 16:55:22    

TBone a écrit :


j'avais essayé [\b-] et ça merdouillait.
le temps de lancer le brol et je reposte.
 
:jap:


 
\b ne supporte pas être dans un test...
 

Code :
  1. cd@asus enhancer $ java -cp $CLASSPATH:. RegExp "[\b^-]t[iou]t[iou][\b^-]" "toto-titi tutu"
  2. Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal/unsupported escape squence near index 2
  3. [\b^-]t[iou]t[iou][\b^-]
  4.   ^
  5.         at java.util.regex.Pattern.error(Pattern.java:1472)
  6.         at java.util.regex.Pattern.escape(Pattern.java:1900)
  7.         at java.util.regex.Pattern.range(Pattern.java:2027)
  8.         at java.util.regex.Pattern.clazz(Pattern.java:1991)
  9.         at java.util.regex.Pattern.sequence(Pattern.java:1529)
  10.         at java.util.regex.Pattern.expr(Pattern.java:1489)
  11.         at java.util.regex.Pattern.compile(Pattern.java:1257)
  12.         at java.util.regex.Pattern.<init>(Pattern.java:1013)
  13.         at java.util.regex.Pattern.compile(Pattern.java:760)
  14.         at RegExp.<init>(RegExp.java:19)
  15.         at RegExp.main(RegExp.java:64)


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 17-02-2003 à 16:56:49    

euh ben ouais, "[\\b^-]" plutot hein :)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 17-02-2003 à 17:00:35    

TBone a écrit :


je n'y pensais pas mais maintenat que tu le dis, je me demande si je suis assez "qualifié" pour me permettre de lister un bug chez Sun...  :sweat:  
 
j'vais en tout cas aller voir si ce bug n'est pas encore remonté.
 
:jap:


En fait, ce n'est pas vraiment un bug, mais une amélioration. Jusqu'à présent, l'internationalisation était très mal gérée par la plupart des applications, et peu de gens s'intéressaient à ce problème. Java a rendu tout ça très simple, et, du coup, des tas de nouveaux problèmes apparaissent tout simplement parce que d'autres composants "classiques" ne sont absolument pas prévus pour cela. Typiquement, les expressions régulières, dont les utilisateurs ont jusqu'à présent toujours accepté de se voir imposer les règles syntaxiques de l'anglais.

Reply

Marsh Posté le 17-02-2003 à 17:00:35   

Reply

Marsh Posté le 17-02-2003 à 17:02:17    

--greg-- a écrit :

euh ben ouais, "[\\b^-]" plutot hein :)


non, pas en ligne de commande ;)
 
le "\\b" c'est quand tu écris "\b" dans un String Java ;)


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 17-02-2003 à 17:04:04    

BifaceMcLeOD a écrit :


Typiquement, les expressions régulières, dont les utilisateurs ont jusqu'à présent toujours accepté de se voir imposer les règles syntaxiques de l'anglais.


c'est ce que j'ai dit ce matin à mon boss technique par mail :jap:


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 17-02-2003 à 17:48:42    

BifaceMcLeOD a écrit :

Ouvre un bug dans la BugParade de Sun ?


je n'ai rien trouvé... (mais c'est a première fois que j'utilise leur interface, j'ai p-ê mal cherché)
 
quoiqu'il en soit, j'ai posté une question dans un thread discutant de ce "word boundary".
 
:hello:


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 19-02-2003 à 16:16:21    

après qques lectures intéressantes et une discussion avec un dév. sur java.sun.com "\bt[iou]t[iou]\b" est devenu "\\b(?<!-)t[iou]t[iou](?!-)\\b"
 
et là ça marche...
 
:hello: et :jap:


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 19-02-2003 à 16:21:06    

Tu peux détailler, s'il te plait ? Ou mettre un lien sur votre discussion : je serais curieux de comprendre.  :)

Reply

Marsh Posté le 19-02-2003 à 16:32:03    

BifaceMcLeOD a écrit :

Tu peux détailler, s'il te plait ? Ou mettre un lien sur votre discussion : je serais curieux de comprendre.  :)  

pareil
cte regex de sauvage :ouch:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 19-02-2003 à 16:49:01    

c'est sûr, c'est une regexp que je n'ai pas encore tout à fait comprise (il l'a expliqué brièvement.)
 
le discussion n'est pas très technique, il m'a juste (très bien) aidé en me filant des RegExp à tester: http://forum.java.sun.com/thread.j [...] ead=347712  
 
à partir de la "reply 5"


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed