Regex
Résolu/Fermé
Chihaya
Messages postés
144
Date d'inscription
samedi 22 juin 2013
Statut
Membre
Dernière intervention
23 février 2021
-
29 mars 2016 à 15:19
Nexii Messages postés 338 Date d'inscription jeudi 13 mars 2014 Statut Membre Dernière intervention 14 mars 2017 - 31 mars 2016 à 13:49
Nexii Messages postés 338 Date d'inscription jeudi 13 mars 2014 Statut Membre Dernière intervention 14 mars 2017 - 31 mars 2016 à 13:49
A voir également:
- Regex
- Regex buddy - Télécharger - Édition & Programmation
- Regex tout sauf - Forum Java
- Regex negation - Forum Programmation
- Regex caractères accentués ✓ - Forum PHP
- Regular expression et accents - Forum Programmation
3 réponses
Nexii
Messages postés
338
Date d'inscription
jeudi 13 mars 2014
Statut
Membre
Dernière intervention
14 mars 2017
573
29 mars 2016 à 15:58
29 mars 2016 à 15:58
Salut,
Déjà, ton expression prend le groupe (lettre ou chiffe + espace) est-ce bien ce que tu souhaite ?
Qu'est ce qu'un mot : une lettre, un chiffre, un espace sont 3 mots différents ou une lettre et un espace forment un seul mot ? Dans ce dernier cas, souhaites-tu catcher les espaces ?
Enfin, pour les 50 mots il suffirait d'un compteur qui s'incrémente dès que tu catche un espace, ou alors tu utilise le "split" sur les espaces pour obtenir un tableau de mot et suffit de faire .length dessus.
Déjà, ton expression prend le groupe (lettre ou chiffe + espace) est-ce bien ce que tu souhaite ?
Qu'est ce qu'un mot : une lettre, un chiffre, un espace sont 3 mots différents ou une lettre et un espace forment un seul mot ? Dans ce dernier cas, souhaites-tu catcher les espaces ?
Enfin, pour les 50 mots il suffirait d'un compteur qui s'incrémente dès que tu catche un espace, ou alors tu utilise le "split" sur les espaces pour obtenir un tableau de mot et suffit de faire .length dessus.
Nexii
Messages postés
338
Date d'inscription
jeudi 13 mars 2014
Statut
Membre
Dernière intervention
14 mars 2017
573
Modifié par Nexii le 29/03/2016 à 16:19
Modifié par Nexii le 29/03/2016 à 16:19
public static void main(String[] args) { String fichier = "n -1600005 16005 n n n 160000 k"; Pattern p = Pattern.compile("([n]|\\-?\\d{1,8})"); Matcher m = p.matcher(fichier); int nb = 0; while (m.find()) { nb += m.groupCount(); } System.out.print("nb = " + nb); }
Sortie console : nb = 7;
Attention, j'ai retiré les espaces de ton expression pour éviter qu'il ne les compte.
Chihaya
Messages postés
144
Date d'inscription
samedi 22 juin 2013
Statut
Membre
Dernière intervention
23 février 2021
8
29 mars 2016 à 16:34
29 mars 2016 à 16:34
Je n'avais pas vu ta solution, elle fonctionne également.
Merci !
Merci !
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
29 mars 2016 à 21:12
29 mars 2016 à 21:12
Bonjour,
Chaque mot est séparé d'un espace ? Alors découpes ton texte sur les espaces (avec split) et compte le nombre de case du tableau.
Chaque mot est séparé d'un espace ? Alors découpes ton texte sur les espaces (avec split) et compte le nombre de case du tableau.
public static void main(String[] args) { String fichier = "n -1600005 16005 n n n 160000 k"; System.out.print(fichier.split(" ").length); // 8 }
Nexii
Messages postés
338
Date d'inscription
jeudi 13 mars 2014
Statut
Membre
Dernière intervention
14 mars 2017
573
31 mars 2016 à 13:49
31 mars 2016 à 13:49
Non car si le fichier contient un autre mot que "n" ou un nombre qui ait + de 8 digit, alors il y a erreur.
Modifié par Chihaya le 29/03/2016 à 16:15
En gros mon fichier contient des mots séparés par des espaces. Un mot est soit la lettre n, soit un nombre.
J'aimerai vérifier que mon texte est bien de ce format, c'est a dire qu'il possède 50 mots de type n/nombre.
du coup j'ai réfléchi un peu depuis, et j'ai obtenu ça :
([n\ ]|\-?\d{1,8}\ ){50}
Le problème est que si j'entre cette regex et mon fichier dans le site que j'ai fourni, elle ne lit pas la totalité de la chaine.
(n\s|\-?\d{1,8}\s)
29 mars 2016 à 16:18
vu que je suis en java, j'ai fait :
Il me suffit à la fin de vérifier cpt pour voir combien de mots ont été trouver.
Problème résolu donc !