[PHP]un 'tit problème de regex
Résolu
sly-bzh
Messages postés
415
Date d'inscription
Statut
Membre
Dernière intervention
-
sly-bzh Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
sly-bzh Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous et toutes,
J'ai un petit problème d'expression régulière. Je m'explique : j'ai un texte au format suivant :
>P15711|104K_THEPA 104 kDa microneme/rhoptry antigen precursor - Theileria parva
MKFLILLFNILCLFPVLAADNHGVGPQGASGVDPITFDINSNQTGPAFLTAVEMAGVKYL
QVQHGSNVNIHRLVEGNVVIWENASTPLYTGAIVTNNDGPYMAYVEVLGDPNLQFFIKSG
DAWVTLSEHEYLAKLQEIRQAVHIESVFSLNMAFQLENNKYEVETHAKNGANMVTFIPRN
GHICKMVYHKNVRIYKATGNDTVTSVVGFFRGLRLLLINVFSIDDNGMMSNRYFQHVDDK
YVPISQKNYETGIVKLKDYKHAYHPVDLDIKDIDYTMFHLADAT
Et je souhaiterais récupérer dans 2 variables distinctes les données comprises entre le > et | dans la première variable, et les données en majuscule (à partir de la deuxième ligne et jusqu'à la fin) dans la deuxième variable. Pour schématiser, j'ai
>XXXXX|Yyyyyy yyyyy yyyyyyyy yyyyyyy y yyyyyy yyyyy
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
et je voudrais obtenir :
$Nom = XXXXX et $seq = ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ...
Voilà, j'ai déja créé ceci comme expression régulière :
"#>([A-Z0-9]+)|[a-zA-Z0-9_]+\r\n([A-Z]+)#"
Ca marche très bien pour les XXXXX mais il ne me renvoit rien pour les ZZZZZZZZZZ
Why ?
Merci d'avance :D
J'ai un petit problème d'expression régulière. Je m'explique : j'ai un texte au format suivant :
>P15711|104K_THEPA 104 kDa microneme/rhoptry antigen precursor - Theileria parva
MKFLILLFNILCLFPVLAADNHGVGPQGASGVDPITFDINSNQTGPAFLTAVEMAGVKYL
QVQHGSNVNIHRLVEGNVVIWENASTPLYTGAIVTNNDGPYMAYVEVLGDPNLQFFIKSG
DAWVTLSEHEYLAKLQEIRQAVHIESVFSLNMAFQLENNKYEVETHAKNGANMVTFIPRN
GHICKMVYHKNVRIYKATGNDTVTSVVGFFRGLRLLLINVFSIDDNGMMSNRYFQHVDDK
YVPISQKNYETGIVKLKDYKHAYHPVDLDIKDIDYTMFHLADAT
Et je souhaiterais récupérer dans 2 variables distinctes les données comprises entre le > et | dans la première variable, et les données en majuscule (à partir de la deuxième ligne et jusqu'à la fin) dans la deuxième variable. Pour schématiser, j'ai
>XXXXX|Yyyyyy yyyyy yyyyyyyy yyyyyyy y yyyyyy yyyyy
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
et je voudrais obtenir :
$Nom = XXXXX et $seq = ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ...
Voilà, j'ai déja créé ceci comme expression régulière :
"#>([A-Z0-9]+)|[a-zA-Z0-9_]+\r\n([A-Z]+)#"
Ca marche très bien pour les XXXXX mais il ne me renvoit rien pour les ZZZZZZZZZZ
Why ?
Merci d'avance :D
A voir également:
- [PHP]un 'tit problème de regex
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php ✓ - Forum PHP
- Php alert ✓ - Forum PHP
- La main de la titi popo - Forum Musique / Radio / Clip
9 réponses
Mais c'est bien sûr, l'erreur la plus grosse était bien le \r\n qui devait se transformer en \n
L'espace je l'avais mis, j'ai juste oublié de le recopier mais bon peu importe, CA MARCHE !!!
Merci beaucoup à vous tous
L'espace je l'avais mis, j'ai juste oublié de le recopier mais bon peu importe, CA MARCHE !!!
Merci beaucoup à vous tous
regarde sur https://openclassrooms.com/fr/courses
si cela peut t'aider, je vais regarder ton code ^^
si cela peut t'aider, je vais regarder ton code ^^
Le tuto du site du zéro, pas de problème, je le connais par coeur à force de taper dedans, mais autant d'habitude j'avais pas de problème (ou plutôt si j'en avais mais je m'en sortais), autant là !!!! Vraiment je vois pas.
Bonjour,
a mon avis c'est un pb de methode.
Une piste:
variable1 = ce qui commence par ">" et finit par "|" (par une regex)
puis par un substr j'enlève le ">" du debut et le "|" de la fin
variable2= commence par une minuscule, puis au moins N majuscules et finit par une majuscule (par une Regex encore)
pareil tu vires ensuite ce qui est en trop.
@lain
a mon avis c'est un pb de methode.
Une piste:
variable1 = ce qui commence par ">" et finit par "|" (par une regex)
puis par un substr j'enlève le ">" du debut et le "|" de la fin
variable2= commence par une minuscule, puis au moins N majuscules et finit par une majuscule (par une Regex encore)
pareil tu vires ensuite ce qui est en trop.
@lain
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Le problème vient du caractère | qui veut dire "OU" dans une expression rationnelle* !
Il faut l'échapper en mettant un \ devant...
Xavier
* Et non pas « expression régulière », qui est une mauvaise traduction de l'anglais « regular expression »
Le problème vient du caractère | qui veut dire "OU" dans une expression rationnelle* !
Il faut l'échapper en mettant un \ devant...
Xavier
* Et non pas « expression régulière », qui est une mauvaise traduction de l'anglais « regular expression »
Ca j'ai essayé, de l'échapper le | dans mon expression rationnelle* mais dans ce cas là je n'obtient plus rien du tout et je ne comprend pas non plus pourquoi...
* Et en Breton ça se dit comment "regular expression"
Sinon pour Alain_42, étant donné que je vais bosser sur quelque centaines de milliers de séquences, je préfère limiter le nombre de fonctions utilisées pour aller un peu plus vite, et je sais que les expression rationnellles permettent de le faire
-
Proverbes breton :
Si les mouettes ont pied, il est temps de virer
Il vaut mieux être saoul que con, ça dure moins longtemps
* Et en Breton ça se dit comment "regular expression"
Sinon pour Alain_42, étant donné que je vais bosser sur quelque centaines de milliers de séquences, je préfère limiter le nombre de fonctions utilisées pour aller un peu plus vite, et je sais que les expression rationnellles permettent de le faire
-
Proverbes breton :
Si les mouettes ont pied, il est temps de virer
Il vaut mieux être saoul que con, ça dure moins longtemps
Bonjour,
Je pense aussi qu'il faut protéger le | et il manque l'espace pour ton test sur les yyy. Il manque aussi les retours à la ligne pour les zzz
L'expression deviendrait :
>([A-Z0-9]+)\|[a-zA-Z0-9_ ]+\r\n([A-Z\r\n]+)
Il faut aussi s'assurer que ton retour à la ligne se fait bien avec \r\n et non pas avec \n
Je pense aussi qu'il faut protéger le | et il manque l'espace pour ton test sur les yyy. Il manque aussi les retours à la ligne pour les zzz
L'expression deviendrait :
>([A-Z0-9]+)\|[a-zA-Z0-9_ ]+\r\n([A-Z\r\n]+)
Il faut aussi s'assurer que ton retour à la ligne se fait bien avec \r\n et non pas avec \n