[perl] Problème expression régulière
Fermé
the pit
-
2 avril 2008 à 12:23
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 2 avril 2008 à 17:32
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 2 avril 2008 à 17:32
A voir également:
- [perl] Problème expression régulière
- Expression de recherche - Guide
- Denon perl pro test - Accueil - Audio
- Expression encoder - Télécharger - Divers Utilitaires
- Error: expected expression ✓ - Forum C
- Quel fichier contient l’expression trouverpix ? - Forum Programmation
5 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
2 avril 2008 à 12:39
2 avril 2008 à 12:39
Salut,
je pense que tu compliques ta regex
2 lignes d'exemple ne suffisent pas pour voir la généralité de ton problème
il y a des problèmes avec les balises
je pense que tu compliques ta regex
2 lignes d'exemple ne suffisent pas pour voir la généralité de ton problème
root@debian:~# cat fic typedef T_RB_MODE T_DL_HS_URLC_MODE_CT_LIST [MAX_NOF_DL_HS_URLC_MODE_CT_LIST]; typedef aaaa; typedef T_DL_HS_PDU_SIZE_DESCR T_DL_HS_PDU_SIZE_LIST[MAX_NOF_DL_HS_PDU_SIZE_ENTRIES]; n'importe quoi root@debian:~# perl -ne 'print if /^typedef/' fic typedef T_RB_MODE T_DL_HS_URLC_MODE_CT_LIST [MAX_NOF_DL_HS_URLC_MODE_CT_LIST]; typedef aaaa; typedef T_DL_HS_PDU_SIZE_DESCR T_DL_HS_PDU_SIZE_LIST[MAX_NOF_DL_HS_PDU_SIZE_ENTRIES]; root@debian:~# perl -ne 'print if /^typedef.*\ [ [ ^ \ ] ] + \ ] ; /' fic typedef T_RB_MODE T_DL_HS_URLC_MODE_CT_LIST [MAX_NOF_DL_HS_URLC_MODE_CT_LIST]; typedef T_DL_HS_PDU_SIZE_DESCR T_DL_HS_PDU_SIZE_LIST[MAX_NOF_DL_HS_PDU_SIZE_ENTRIES]; root@debian:~#A enlever les espace que j'ai mis dans la regex
il y a des problèmes avec les balises
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
2 avril 2008 à 12:53
2 avril 2008 à 12:53
un essaie avec code html
perl -ne 'print if /^typedef.*\[[^\]]+\]/' fic
perl -ne 'print if /^typedef.*\[[^\]]+\]/' fic
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
2 avril 2008 à 12:53
2 avril 2008 à 12:53
le message 2 est correct
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
2 avril 2008 à 14:01
2 avril 2008 à 14:01
tu dois savoir que pour écrire une regex on a besoin de 2 choses
le fichier à traiter
ce qu'on veut obtenir
pour l'instant ce que tu demandes c'est trop général
je pourrai t'aider à condition que tu soit plus explicite
merci
le fichier à traiter
ce qu'on veut obtenir
pour l'instant ce que tu demandes c'est trop général
je pourrai t'aider à condition que tu soit plus explicite
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
2 avril 2008 à 17:32
2 avril 2008 à 17:32
Voici un exemple un peu mieux
:~$ cat the_pit typedef T_RB_MODE T_DL_HS_URLC_MODE_CT_LIST [MAX_NOF_DL_HS_URLC_MODE_CT_LIST]; alors que pour celle ci ça marche; typedef T_DL_HS_PDU_SIZE_DESCR T_DL_HS_PDU_SIZE_LIST[MAX_NOF_DL_HS_PDU_SIZE_ENTRIES]; typedef TYPE VAR[SIZE]; --> ça passe typedef TYPE VAR [SIZE]; --> ça ne passe pas :~$ perl -ne 'next unless /^typedef\s+(.*?)\s+(.*?)\s*\[([^\]]+)\]/; print "\ntype=$1\nnom=$2\ntaille=$3\n\n"' the_pit type=T_RB_MODE nom=T_DL_HS_URLC_MODE_CT_LIST taille=MAX_NOF_DL_HS_URLC_MODE_CT_LIST type=T_DL_HS_PDU_SIZE_DESCR nom=T_DL_HS_PDU_SIZE_LIST taille=MAX_NOF_DL_HS_PDU_SIZE_ENTRIES type=TYPE nom=VAR taille=SIZE type=TYPE nom=VAR taille=SIZE :~$