Bonjour,
merci beaucoup pour ta réponse. En fait j'avais mal lu, la chaîne de découpage est la suivante :
Citation :
@formes = split(/[\p{IsPunct}\p{IsSpace}\p{IsBlank}\p{IsDigit}]+/, $ligne); if ($forme !~ /^(.)\1+$/ && $forme !~ /^(\s+|[\s\&\"\'\#\{\(\[\|\-\`\\\_\)\]\=\}\*\+\:\%]+)$/) {...}
|
et
Citation :
if ($ngram !~ /^[\s&\"\'\#\{\(\[\|\-\`\\\_\)\]\=\}\*\+\:\%]+$/) {...}
|
Mais ta remarque est valable et j'en prends note. Du coup, j'en déduis pour le deuxième quote qu'il s'agit de vérifier que la variable ne doit pas être constituée uniquement des caractères : \s&"'#{([|-`\_)]=}*+:%... Que j'ai donc traduit en java par :
if(! Pattern.matches("^[\\s&\"'#{(\\[|-`\\_)\\]=}*+:%]+$", ngram) ) {...}
Mais j'ai une exception à l'exécution (caractères inattendus dans la regex...)
En fait c'est dommage car les résultats que j'obtiens ne sont pas super, alors que le reste de mon script marche
. En fait il s'agit d'un projet pour déterminer la langue d'un document de langue inconnue... et donc si les mots du fichier à analyser sont mal découpés (en utilisant justement ces regex) ça fausse les calculs
[edit] : en fait là où apparait un '\' en perl, et bien il suffit de rajouter un \ en java, sauf dans le cas de certains caractères : \", \' ... qui restent pareil.
De même pour \p{isPunct} qui va devenir en java \\p{Punct} (bien Punct et pas isPunct)
Message édité par axert19 le 29-12-2010 à 23:41:37