|
Bas de page | |
---|---|
Auteur | Sujet : qu'utilisez-vous comme regexp pour matcher tout caractère (meme \n) |
Publicité | Posté le 30-06-2009 à 20:34:51 |
gilou ModérateurModzilla |
Message édité par gilou le 01-07-2009 à 09:19:28 --------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
MisterBark be aware | bon, alors en effet, je viens de faire le test et ca marche aussi chez moi.
--------------- La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump) |
MisterBark be aware | Ca y est, j'ai compris !!! -> c'est en effet une histoire de taille de fichier. Voila :
Le problème est donc le suivant : Résultat: si on met 31.9Ko de données avant, ca renverra le premier PROUT (1246337630) puisqu'il ne peut pas inclure les 2 lignes PROUT dans (.|\n)* qui feraient alors plus de 32Ko. C'est un peu comme si le * appliqué à une parenthèse commencait à chercher à 32Ko (ou 32K répétitions) et non au maximum de la chaine. C'est incroyable, pourtant, c'était illimité dans le 5.8.8 ! Quelqu'un aurait une explication ? Message cité 1 fois Message édité par MisterBark le 01-07-2009 à 10:57:02 --------------- La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump) |
gilou ModérateurModzilla | Tu as essayé ceci pour matcher le contenu de ton fichier:
Message édité par gilou le 04-07-2009 à 22:43:18 --------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
MisterBark be aware | Salut !
--------------- La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump) |
gilou ModérateurModzilla |
--------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
MisterBark be aware | oui bien sur ca revient à ce que je disais :
Message cité 1 fois Message édité par MisterBark le 05-07-2009 à 04:21:13 --------------- La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump) |
gilou ModérateurModzilla |
Ça arrête de matcher a 32Ko de données, en fait.
--------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
MisterBark be aware | non, ca arrêterait de matcher à 32K si on faisait comme ceci :
--------------- La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump) |
Publicité | Posté le 09-07-2009 à 19:03:05 |
gilou ModérateurModzilla |
j'ai testé avec des tailles de fichier variables
--------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
MisterBark be aware | Salut,
--------------- La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump) |
gilou ModérateurModzilla | La tu fais des suppositions sur la manière dont le moteur d'expression régulière fonctionne.
--------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
MisterBark be aware | comment peut-on imaginer que lorsqu'on fait (.|\n)* ca commencerait à chercher au plus petit, pour laisser passer des "solutions" qui matchent, puis une fois arrivé à la fin, revenir en arrière en disant "ah oui, il y avait ca qui matche donc c'est ca le plus grand... Ce serait terriblement mal concu ! Il est évident que lorsqu'on utilise *, ca commence directement a chercher au plus grand, et tu t'en apercevrais forcément en faisant des tests de rapidité : /^(.|\n)*PROUT/ Test 1: Test 2: En utilisant ma boucle de chrono, tu verrais que le test 1 est plus rapide. Inversement, si on utilisait (.|\n)*? c'est le 2 qui serait plus rapide. Message cité 1 fois Message édité par MisterBark le 11-07-2009 à 18:55:12 --------------- La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump) |
gilou ModérateurModzilla |
Tout simplement parce que c'est comme ça que ça marche si vous remplacez votre * par un {n} (ou n est en entier positif). Et parce que si on connait un peu la théorie sous-jacente au pattern matching, c'est a dire les automates d'état fini, on sait que c'est ainsi que c'est en général implémenté.
Message édité par gilou le 12-07-2009 à 02:16:08 --------------- There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! -- |
Sujets relatifs | |
---|---|
Petit problème de structure / chaine de caractère | Vous utilisez SNMP ? |
Caractère séparateur sous excel VBA | [Resolu]Tronquer une chaine de caractère |
[ksh] Récupérer un morceau d'une chaine de caractère | Comparaison de String et caractère universel |
Erreur Nonetype sur une regexp pourtant reconnue [résolu] | [Shell] Supprimer les répétitions de caractère |
[Mysql] Ajout d'un caractere "0" sur toutes les valeurs d'un champs | preg_match replace et REGEXP |
Plus de sujets relatifs à : qu'utilisez-vous comme regexp pour matcher tout caractère (meme \n) |