comment en peut utiliser une expression réguliere qui selection un mot d’au moins 6 caractères répété au moins 5 fois dans une même ligne.
merci
Version imprimable
comment en peut utiliser une expression réguliere qui selection un mot d’au moins 6 caractères répété au moins 5 fois dans une même ligne.
merci
Il faut utiliser les classes Pattern et Matcher de java.util pour exécuter des expressions régulières. Je t'invite à lire ce tutoriel pour comprendre le fonctionnement des regexp en Java : http://cyberzoide.developpez.com/java/regex/
merci pour votre aide, oui je comprend comment le faire avec Pattern, mes par exemple trouvez un fichier contenant un mot d’au moins 6 caractères,
se terminant par la lettre c et n’utilisant que les lettres a,b,c,e,f,g,h,i,j,k,l et aucune majuscule.
ma expression régulière est "[a-ce-l]*c$" mes ca me donne pas le bonne résultat la même chose pour la question que j'ai poser mon expression est "\w{0,6}.\s{5}" merci.
- Le * ne veut pas dire "au moins 5 fois," bien sûr -_-°. Pour "au moins N fois," c'est {N,} la virgule indiquant "entre N et un nombre indéterminé de fois."
- Qu'est-ce que ce $ vient faire là ? Vire.
C'est peut-être possible en jouant avec le lookahead et les non capturing group, mais je crains que l'expression régulière au finale soit
- imbuvable
- intestable
- non fiable
Pourquoi ne pas simplement faire quelques lignes de code qui fasse ce boulot.
voila mon programme :
je veut sélectionne toutes les expressions commençant et se terminant par le même mot séparé par au plus 10 caractères comme « la vie la » dans « la vie la mort », sa sélectionne juste la vie la m sa marche pas :cry:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import java.util.regex.*; public class Motif { public static void main(String[] args) { try{ Pattern p = Pattern .compile("^[a-z].{0,10}"); String entree = "la vie la mort"; Matcher m = p.matcher(entree); while (m.find()) System.out.println(entree.substring(m.start(), m.end())); }catch(PatternSyntaxException pse){} } }
Pour sélectionner "N'importe quoi, suivi d'un A, suivi de la même chose qu'avant le A" :
(.*) : N'importe quoi, dans un capturing group. Comme c'est le premier, il a le numéro 1.Code:"(.*)A\\1"
A : La lettre A
\\1 : La même chose que ce qu'on a pris dans le capturing group numéro 1
À toi d'utiliser ça pour ton problème.
si j'ai bien compris faut que je face ca :
sa me donne pas le bon résultat sa donneCode:"(.*)([a-z].{0,10})\\1"
la vie la
mort
il faut pas que s'affiche la mort merci
Bien vu, mon exemple acceptait aussi "Rien, la lettre A, et à nouveau rien."
Pour corriger ce serait :
"N'importe quel caractère une ou plusieurs fois, la lettre A, et ce qu'on a pris avant la lettre A"Code:"(.+)A\\1"
Merci pour votre aide ,sa fonction :ccool:
je reviens a mon exemple trouvez un fichier contenant un mot d’au moins 6 caractères, se terminant par la lettre c et n’utilisant que les lettres a,b,c,e,f,g,h,i,j,k,l et aucune majuscule. voila mon code :
je veut sélectionner juste abeghic sa marche pas .Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 import java.util.regex.*; public class Motif { public static void main(String[] args) { try{ Pattern p = Pattern .compile("([a-ce-l].{6,})c"); String entree = "abeghic fabidlc"; Matcher m = p.matcher(entree); while (m.find()) System.out.println(entree.substring(m.start(), m.end())); }catch(PatternSyntaxException pse){} } }
merci
Qu'est-ce qu'il fait là ce point ?
(Et ces parenthèses, tant qu'à faire)
je pense que je lais trouvais :
Code:"[a-ce-l]{6,}c"
j'essayer de sélectionner un mot d’au moins 2 caractères répété au moins 5 fois dans une même ligne.
sa donner :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 import java.util.regex.*; public class Motif { public static void main(String[] args) { try{ Pattern p = Pattern .compile("([a-z]{2,}).{5}"); String entree = "la vie est est est est est belle"; Matcher m = p.matcher(entree); while (m.find()) System.out.println(entree.substring(m.start(), m.end())); }catch(PatternSyntaxException pse){} } }
la vie
est est
est est
est belle
j'ai besoin d'aide voila mon programme
sa me donne ce résultat 2005,43.45Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.*; import java.util.regex.*; public class Motif { public static void main(String[] args) { try{ Pattern p = Pattern .compile("[0-9]{4},[0-9\\.]+"); String entree = "12/12/2005,43.45,32.1,"; Matcher m = p.matcher(entree); while (m.find()) System.out.println(entree.substring(m.start(), m.end())); }catch(PatternSyntaxException pse){} } }
au lieu de ce lui la 2005,32.1 sa fais plusieurs heur que je travaille sur ca merci
A noter que ca n'a strictement rien à voir avec les mot et répétition évoqués auparavant.....Code:
1
2
3
4
5 Pattern p = Pattern .compile("([0-9]{4}),.*([0-9\\.]+)"); String entree = "12/12/2005,43.45,32.1,"; Matcher m = p.matcher(entree); while (m.find()) System.out.println(m.group(1)+m.group(2));
sa marche pas sa donne ce résultat :
20051
merci
Ya tu quelqu'un qui peu m'aider svp :cry:
Ceci devrais corriger.
Code:Pattern p = Pattern .compile("([0-9]{4}),.*?([0-9\\.]+)");
sa marche pas plus :cry: sa donne 2005 43.45 ou lieu du 2005 32.1