fr . comp . lang . php


Service Usenet Gratuit - You The Net .Com Consultez les groupes de news usenet nntp avec www.youthenet.com Postez et suivez voos fils de discussions gratuitement avec you the net .com le service gratuit de news en ligne

Re: [HS] Expression reguliere sur Fr Comp Lang Php



Groupes les plus fournis
sci astronautique comp sys mac comp graphisme pao rec son-image video materiel comp os mac-os classiques comp infosystemes www navigateurs comp reseaux ip rec arts musique metal comp algorithmes lettres langues-anciennes grec comp reseaux ethernet petites-annonces divers comp materiel optimisation comp os mac-os x usenet-fr emile durkheim rec radio rec arts musique jazz sci electrotechnique bio medecine comp sys palm-pilot


Derniers posts youthenet
Re: Démission pour création d'entreprise commerce ou service Que pensez-vous de la doctrine de James Madison ? Re: envoi des données à un serveur html la demeure du chaos Re: Alice au pays de Free (d'après la t ribune) Re: Est-ce ue violation de la GPL? Re: L'ultra libéralisme du chemin de fer prôné par Sarkozy... Président langue de bois ? la compagnie de l'autre

actualité

Entrez votre email ci-dessus pour vous abonner, vous désabonner ou ...
PC-InfoPratique - Il y a 5 heures
NET / SQL est impérative. De bonnes connaissances en administration Windows Server / IIS6 sont très appréciées. Une connaissance de Linux / Php est un plus.
source

actualité

Professeur d'anglais - langue maternelle anglaise
Casafree.com - Publié depuis 1 heure
Pas d'autre annonce de ann en cours de publication. Casafree utilise les technologies : Php, Mysql, Xoops, et vous recommande l'utilisation de Firefox.
Appartement 60m² à Marrakech Casafree.com
4 autres articles
source

Accueil |  Ajouter aux Favoris |  Inscription |  connexion |  Flux RSS de fr.comp.lang.php |

fr . comp . lang . php

Re: [HS] Expression reguliere



accueil . fr . comp . lang . php




Re: [HS] Expression reguliere

   
Sujet: Re: [HS] Expression reguliere
De: om+news (l' arobase) miakinen.net (Olivier Miakinen)
Groupes: fr.comp.lang.php
Organisation: Neottia nidus-avis
Date: 13. Jul 2008, 10:33:48
Le 13/07/2008 09:21, SAM a écrit :

S'il y en a que ça intéresse (toi ou quelqu'un d'autre) je peux
expliquer pourquoi ça marche.

Ben moi, par exemple.
Et non seulement "pourquoi" mais "comment"

Allons-y, et je vais commencer par l'expression régulière :
      /(?<=[[,])(null,)*null[],]/

Tout d'abord, je suppose que tout le monde connaît les classes de
caractères, qui représentent toujours *un* caractère choisi parmi
plusieurs. Par exemple [0123456789] représente un chiffre de 0 à 9,
mais [0-9] représente la même chose. On voit que le caractère '-'
est spécial dans une classe de caractères, et si on veut l'inclure
il faut le mettre au début [-0-9] ou à la fin [0-9-]. Mais le
caractère ']' est spécial lui aussi ! Si on veut l'inclure, on ne
peut le mettre qu'au début : []0-9].

Ainsi, « [],] » est la classe de caractères qui représente soit un
crochet ']' soit une virgule ','. Quant à « [[,] », il représente
soit un crochet '[' soit une virgule ','.

Je ne ferai pas l'affront d'expliquer '*', et il peut rester un seul
truc un peu mystérieux : « (?<= <quelque chose> ) ». Il s'agit d'une
assertion positive arrière (positive lookbehind assertion) qui vérifie
que la chaîne en question se trouve bien avant celle que l'on veut
récupérer, mais sans la récupérer. Ainsi, (?<=,)null, trouvera bien
« null, » dans « ,null, » mais pas dans « ,tronull, ».

Au final, /(?<=[[,])(null,)*null[],]/ trouvera :
 null,
 null]
 null,null,
 null,null]
 null,null,null,
 null,null,null]
 null,null,null,null,
 null,null,null,null]
et ainsi de suite, mais *seulement* après une virgule ou un crochet ouvrant.

Vu que j'utilise preg_replace_callback, le résultat du match sera envoyé
à la fonction repnull, qui trouve le match complet dans $matches[0] et
le contenu d'éventuelles parenthèses captruantes dans $matches[1], etc.
(mais je ne m'en sers pas). Mettons qu'elle reçoive par exemple la
chaîne "null,null]", de longueur 10. Le nombre de null est 10/5 = 2,
calculé par :
    $count = strlen($matches[0]) / 5;
Je rajoute '#' devant, et derrière je veux rajouter ',' ou ']' selon ce
qu'il y avait au départ, ce qui se fait par substr($matches[0], -1).
Dans ce cas précis :
  '#' . $count . substr($matches[0], -1)
vaut :
  '#' . 2 . ']'

Et voilà !


d'abord :
que devient le $matches de  repnull($matches)
dans  dorepnull($subject) ?

Il est remplacé par la chaîne envoyée en retour de repnull(). Ainsi,
"null,null]" est remplacé par "#2]".

Ensuite :
Mais où donc es-tu aller dénicher ce 'preg_replace_callback' ?
(doit quand même falloir fouiller pour trouver cette fonction !)

La fouille n'est pas bien longue, car la doc est bien faite de ce point
de vue-là. Par exemple, sur la page <http://fr.php.net/preg_replace> tu
vois dans la colonne de gauche toutes les fonctions apparentées :
# preg_grep
# preg_last_error
# preg_match_all
# preg_match
# preg_quote
# preg_replace_callback
# preg_replace
# preg_split
Il suffit d'un clic pour visiter la doc de chacune.

Je ne vois même pas la différence entre : 'preg_split' et 'explode' :-(

'explode' ne traite que des chaînes statiques, 'preg_split' des
expressions régulières. Je crois que JavaScript a une seule fonction
pour cela, mais c'est grace au fait qu'il existe un type RegExp, non ?

Et si tu as un bon moment tu pourras expliquer :
     /(?<=[[,])(null,)*null[],]/
en particulier :  []  (pourquoi ce n'est pas \[\] ?)

Parce que je ne cherche pas une séquence de *quatre* caractères "[],]"
mais *un* seul caractère qui est soit "]" soit ",".

dans : *null[],]/     (comment l'expression repère les bons crochets ?)
mais aussi : (?<=[[,])

Cf. les explications ci-dessus à propos des classes de caractères.

Cordialement,
--
Olivier Miakinen


Date Sujet  Auteur
11.07. * [HS] Expression reguliereEtienne SOBOLE
11.07. `* Re: [HS] Expression reguliereOlivier Miakine
11.07.  +- Re: [HS] Expression reguliereOlivier Miakine
12.07.  `* Re: [HS] Expression reguliereEtienne SOBOLE
12.07.   `* Re: [HS] Expression reguliereOlivier Miakine
13.07.    +* Re: [HS] Expression reguliereSAM
13.07.    |+- Re: [HS] Expression reguliereOlivier Miakine
13.07.    |+- Re: [HS] Expression reguliereEtienne SOBOLE
13.07.    |`* Re: [HS] Expression reguliereOlivier Miakine
13.07.    | `- Re: [HS] Expression reguliereSAM
13.07.    `- Re: [HS] Expression reguliereEtienne SOBOLE
Derniers articles
petites-annonces informatique autos mitsubishi jobs offres jobs demandes jobs d jobs soc politique misc finance bio medecine sci physique soc alcoolisme rec aviation usenet abus d rec moto rec sport automobile

Derniers messages
petites-annonces informatique autos mitsubishi jobs offres jobs demandes jobs d jobs rec moto misc finance soc politique sci astrophysique sci physique bio medecine comp text tex soc religion comp os mac-os x

actualité

Entrez votre email ci-dessus pour vous abonner, vous désabonner ou ...
PC-InfoPratique - Il y a 5 heures
NET / SQL est impérative. De bonnes connaissances en administration Windows Server / IIS6 sont très appréciées. Une connaissance de Linux / Php est un plus.
source

actualité

Société: SOCIETE CONFIDENTIELLE
PC-InfoPratique - Il y a 23 heures
Des connaissances en développement micro-informatique (WINDEV, PHP, JAVA ou autre langage orienté Objet) seraient appréciées.
source


 




Copyright 2008 ©  - YouTheNet.com

| acerola |