OVH Cloud OVH Cloud

Regex et accents

12 réponses
Avatar
Pif
Bonjour, je voudrais pouvoir gérer les accents dans un expression
régulières.

Par exemple, qu'il me reconnaisse "gene" dans une chaine " un chromosome
a plein de gènes".

Je me moque un peu du sens inverse "reconnaitre "gène" dans " the gene
expression", mais si vous avez une astuce pour pouvoir controler cette
option ca m'intéresse !

merci bien !

10 réponses

1 2
Avatar
Stephane Zuckerman
Bonjour, je voudrais pouvoir gérer les accents dans un expression
régulières.

Par exemple, qu'il me reconnaisse "gene" dans une chaine " un chromosome
a plein de gènes".


Pourquoi ne pas faire de classes de caractères ? Du genre :

String e = "[eéèêë]";
String a = "[...]"; // etc.

Je me moque un peu du sens inverse "reconnaitre "gène" dans " the gene
expression", mais si vous avez une astuce pour pouvoir controler cette
option ca m'intéresse !


Comme ça là non, je ne vois pas.

--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)

Avatar
Pif
pasque quand on est sur du multilingue, il existes des centaines des
caractères accentués ...

Pourquoi ne pas faire de classes de caractères ? Du genre :


Avatar
Serval2412
Bonjour, je voudrais pouvoir gérer les accents dans un expression
régulières.

Par exemple, qu'il me reconnaisse "gene" dans une chaine " un chromosome
a plein de gènes".

Je me moque un peu du sens inverse "reconnaitre "gène" dans " the gene
expression", mais si vous avez une astuce pour pouvoir controler cette
option ca m'intéresse !

merci bien !
Bonjour,


Il existe plusieurs moteurs d'expressions régulières, il faudrait que tu
nous en dises un peu plus sur le programme que tu comptes utiliser et sa
version. Suivant le programme et même sa version, le moteur n'est pas le
même. (cf l'excellent livre "OReilly - Mastering Regular Expressions")
Par ailleurs, il faudrait aussi donner l'encoding de tes caractères
(utf-8, iso 8859-1, ...)

merci.

Avatar
Pif

Bonjour, je voudrais pouvoir gérer les accents dans un expression
régulières.

Par exemple, qu'il me reconnaisse "gene" dans une chaine " un
chromosome a plein de gènes".

Je me moque un peu du sens inverse "reconnaitre "gène" dans " the gene
expression", mais si vous avez une astuce pour pouvoir controler cette
option ca m'intéresse !

merci bien !


Bonjour,

Il existe plusieurs moteurs d'expressions régulières, il faudrait que tu
nous en dises un peu plus sur le programme que tu comptes utiliser et sa
version. Suivant le programme et même sa version, le moteur n'est pas le
même. (cf l'excellent livre "OReilly - Mastering Regular Expressions")
Par ailleurs, il faudrait aussi donner l'encoding de tes caractères
(utf-8, iso 8859-1, ...)


je fais un getString depuis ResultSet JDBC, donc l'encodage n'est pas le
problème...

je vais jeter un coup d'oeil au bouquin indiqué, mais que voudrais tu
savoir de plus sur mon programme ?

Je fais beaucoup d'analyses (plusieurs 10 aines de millions, chacune
allant d'un ligne à un maximum de 3 ou 400 mots...

merci.



Avatar
Serval2412


Bonjour, je voudrais pouvoir gérer les accents dans un expression
régulières.

Par exemple, qu'il me reconnaisse "gene" dans une chaine " un
chromosome a plein de gènes".

Je me moque un peu du sens inverse "reconnaitre "gène" dans " the
gene expression", mais si vous avez une astuce pour pouvoir controler
cette option ca m'intéresse !

merci bien !



Bonjour,

Il existe plusieurs moteurs d'expressions régulières, il faudrait que
tu nous en dises un peu plus sur le programme que tu comptes utiliser
et sa version. Suivant le programme et même sa version, le moteur
n'est pas le même. (cf l'excellent livre "OReilly - Mastering Regular
Expressions")
Par ailleurs, il faudrait aussi donner l'encoding de tes caractères
(utf-8, iso 8859-1, ...)



je fais un getString depuis ResultSet JDBC, donc l'encodage n'est pas le
problème...

je vais jeter un coup d'oeil au bouquin indiqué, mais que voudrais tu
savoir de plus sur mon programme ?

Je fais beaucoup d'analyses (plusieurs 10 aines de millions, chacune
allant d'un ligne à un maximum de 3 ou 400 mots...
Histoire de ne pas partir sur une fausse piste, peux tu juste nous dire

la version de Java que tu utilises ?

Sinon, désolé quand je parlais de "programmes", je repensais surtout à
certains paragraphes du bouquin concernant l'utilisation de Perl, Awk,
grep, egrep, ... en oubliant que j'étais sur un forum Java.
Si je me souviens bien (je n'ai pas le bouquin, je l'avais emprunté à la
médiathèque), les regexp sont à peu près bien gérées à partir de Java 1.4.



Avatar
Serval2412



Bonjour, je voudrais pouvoir gérer les accents dans un expression
régulières.

Par exemple, qu'il me reconnaisse "gene" dans une chaine " un
chromosome a plein de gènes".

Je me moque un peu du sens inverse "reconnaitre "gène" dans " the
gene expression", mais si vous avez une astuce pour pouvoir
controler cette option ca m'intéresse !

merci bien !




Bonjour,

Il existe plusieurs moteurs d'expressions régulières, il faudrait que
tu nous en dises un peu plus sur le programme que tu comptes utiliser
et sa version. Suivant le programme et même sa version, le moteur
n'est pas le même. (cf l'excellent livre "OReilly - Mastering
Regular Expressions")
Par ailleurs, il faudrait aussi donner l'encoding de tes caractères
(utf-8, iso 8859-1, ...)




je fais un getString depuis ResultSet JDBC, donc l'encodage n'est pas
le problème...

je vais jeter un coup d'oeil au bouquin indiqué, mais que voudrais tu
savoir de plus sur mon programme ?

Je fais beaucoup d'analyses (plusieurs 10 aines de millions, chacune
allant d'un ligne à un maximum de 3 ou 400 mots...


Histoire de ne pas partir sur une fausse piste, peux tu juste nous dire
la version de Java que tu utilises ?

Sinon, désolé quand je parlais de "programmes", je repensais surtout à
certains paragraphes du bouquin concernant l'utilisation de Perl, Awk,
grep, egrep, ... en oubliant que j'étais sur un forum Java.
Si je me souviens bien (je n'ai pas le bouquin, je l'avais emprunté à la
médiathèque), les regexp sont à peu près bien gérées à partir de Java 1.4.
En attendant ta réponse, voici une solution très "naïve" (et bourrin

surtout !) :
avant de faire la recherche, tu peux transformer le texte en
convertissant tous les caractères accentués en caractères normaux.

Voici un premier jet rapide à améliorer bien sûr !
public static void main(String[] args) {
String strTest1 = "un chromosome a plein de gènes";
strTest1 = strTest1.replaceAll("[è,é,ê,ë]","e");
strTest1 = strTest1.replaceAll("[û,ù]","u");
strTest1 = strTest1.replaceAll("ï","i");
strTest1 = strTest1.replaceAll("à","a");
System.out.println(strTest1);
Pattern p = Pattern.compile(".*gene.*");
Matcher m = p.matcher(strTest1);
boolean b = m.matches();
System.out.println("trouvé = "+b);
}

On pourrait rajouter les majuscules et les majuscules accentués (pour
certains pays).




Avatar
Pif

Histoire de ne pas partir sur une fausse piste, peux tu juste nous dire
la version de Java que tu utilises ?


1.4.2, et il serait bien que ce soit compatible avec la 1.5.0

Sinon, désolé quand je parlais de "programmes", je repensais surtout à
certains paragraphes du bouquin concernant l'utilisation de Perl, Awk,
grep, egrep, ... en oubliant que j'étais sur un forum Java.
Si je me souviens bien (je n'ai pas le bouquin, je l'avais emprunté à la
médiathèque), les regexp sont à peu près bien gérées à partir de Java 1.4.


Avatar
Serval2412


Histoire de ne pas partir sur une fausse piste, peux tu juste nous
dire la version de Java que tu utilises ?



1.4.2, et il serait bien que ce soit compatible avec la 1.5.0


Sinon, désolé quand je parlais de "programmes", je repensais surtout à
certains paragraphes du bouquin concernant l'utilisation de Perl, Awk,
grep, egrep, ... en oubliant que j'étais sur un forum Java.
Si je me souviens bien (je n'ai pas le bouquin, je l'avais emprunté à
la médiathèque), les regexp sont à peu près bien gérées à partir de
Java 1.4.
L'exemple que j'ai donné a été exécuté sur Eclipse avec jre 1.4.08


maintenant faudrait voir effectivement avec la 1.5.0


Avatar
Serval2412



Histoire de ne pas partir sur une fausse piste, peux tu juste nous
dire la version de Java que tu utilises ?




1.4.2, et il serait bien que ce soit compatible avec la 1.5.0


Sinon, désolé quand je parlais de "programmes", je repensais surtout
à certains paragraphes du bouquin concernant l'utilisation de Perl,
Awk, grep, egrep, ... en oubliant que j'étais sur un forum Java.
Si je me souviens bien (je n'ai pas le bouquin, je l'avais emprunté à
la médiathèque), les regexp sont à peu près bien gérées à partir de
Java 1.4.



L'exemple que j'ai donné a été exécuté sur Eclipse avec jre 1.4.08
maintenant faudrait voir effectivement avec la 1.5.0
J'ai testé sur la 1.5.0, ça marche




Avatar
mordicus
Serval2412 wrote:

En attendant ta réponse, voici une solution très "naïve" (et bourrin
surtout !) :
avant de faire la recherche, tu peux transformer le texte en
convertissant tous les caractères accentués en caractères normaux.


Ma solution que j'ai trouvé c'est d'utiliser ICU d'IBM, marche tres bien

surtout quand il s'agit de virer les accents
quelque soit la langue. J'an ai eu besoin pour un moteur de recherche.

1 2