Nos articles concernant les techniques web sont centrés sur des solutions pratiques qui mettent en œuvre, le plus souvent, notre framework web : Vae Soli!
Des articles généraux sont également fournis dans le respect des standards du web.
Tous nos articles web sont disponibles sous le couvert de la
licence
Creative Commons — Paternité - pas de modification.
2009-03-01 – 13:04
2009-03-01 – 13:04
2010-03-16 – 10:09
Les expressions régulières sont le terme rébarbatif que les informaticiens
utilisent pour désigner une série d'opérations de recherches de chaînes de
caractères dans d'autres chaînes de caractères, recherches qui fonctionnent
sur base de jokers ('*') (mais cela va bien au-delà de
l'utilisation du caractère 'étoile').
Les expressions régulières sont implémentées dans de nombreux langages : awk, Java, javascript, C, C++, C#, Python, Perl, PHP, ... Ce n'est évidemment pas sans raison car en effet, les expressions régulières permettent d'extraire des informations extrêmement complexes sur base de motifs (patterns) très complets et très précis.
Les expressions régulières sont donc ce qui permet de spécifier les motifs
que l'on recherche. Dans le paragraphe d'introduction de cet article nous
avons fait référence au caractère spécial '*'. On pourrait dire
que c'est UN motif déterminé qui veut dire n'importe quel caractère et
en n'importe quel nombre. Dans la même veine, on sait que
'?' veut dire n'importe quel caractère mais il ne peut
y en avoir qu'un. Ce sont des motifs spécifiques qui ont une
signification spécifique.
Cependant, dans un monde d'informaticiens, ces motifs (désormais nous
parlerons de patterns) sont insuffisants : les
informaticiens veulent pouvoir spécifier bien d'autres conditions, comme par
exemple qu'à tel endroit de la chaîne il peut y avoir 3 chiffres, qu'à un
autre endroit il ne peut y avoir que des voyelles majuscules suivies d'un
caractère qui peut avoir les valeurs '@&!' et qu'enfin il faut
que la chaîne se termine par un 'a'.
C'est là que les expressions régulières étendues entrent en jeu.
Il n'existe pas qu'une seule forme d'expressions régulières. Il est donc particulèrement important de savoir quelle syntaxe utiliser. Cet article se contentera de parler des expressions régulières Perl implémentées dans le langage PHP.
…
Voilà un texte composé de 2 paragraphes latins. Chaque paragraphe est mis
dans une balise <p> :
Tum Pomponius: At ego, quem vos ut deditum Epicuro insectari soletis, sum
multum equidem cum Phaedro, quem unice diligo, ut scitis, in Epicuri hortis,
quos modo praeteribamus, sed veteris proverbii admonitu vivorum memini, nec
tamen Epicuri licet oblivisci, si cupiam, cuius imaginem non modo in tabulis
nostri familiares, sed etiam in poculis et in anulis habent.
Contra quos omnis dicendum breviter existimo. Quamquam philosophiae quidem
vituperatoribus satis responsum est eo libro, quo a nobis philosophia
defensa et collaudata est, cum esset accusata et vituperata ab Hortensio.
qui liber cum et tibi probatus videretur et iis, <!-- @todo Ici, je dois
trouver ce qui manque --> postulant in eo, quod semel admissum coerceri
reprimique non potest, ut propemodum iustioribus utamur illis, qui omnino
avocent a philosophia, quam his, qui rebus infinitis modum constituant in
reque eo meliore, quo maior sit, mediocritatem desiderent.
if ( preg_match_all( '/<p>(.*?)<\/p>/si',$szStr,$matches ) )
$szResult = "On a trouvé " . count( $matches[0] ) . " paragraphes.";
else
$szResult = "On n'a PAS trouvé de paragraphe";
... donne comme résultat :
On a trouvé 2 paragraphes.
Voilà un texte composé de 2 paragraphes latins et qui comporte un commentaire de type "TODO":
Tum Pomponius: At ego, quem vos ut deditum Epicuro insectari soletis, sum
multum equidem cum Phaedro, quem unice diligo, ut scitis, in Epicuri hortis,
quos modo praeteribamus, sed veteris proverbii admonitu vivorum memini, nec
tamen Epicuri licet oblivisci, si cupiam, cuius imaginem non modo in tabulis
nostri familiares, sed etiam in poculis et in anulis habent.
Contra quos omnis dicendum breviter existimo. Quamquam philosophiae quidem
vituperatoribus satis responsum est eo libro, quo a nobis philosophia
defensa et collaudata est, cum esset accusata et vituperata ab Hortensio.
qui liber cum et tibi probatus videretur et iis, <!-- @todo Ici, je dois
trouver ce qui manque --> postulant in eo, quod semel admissum coerceri
reprimique non potest, ut propemodum iustioribus utamur illis, qui omnino
avocent a philosophia, quam his, qui rebus infinitis modum constituant in
reque eo meliore, quo maior sit, mediocritatem desiderent.
if ( preg_match_all( '/<!-- @todo(.*?)-->/si',$szStr,$matches ) )
{
$szResult = "On a trouvé " . count( $matches[0] ) . " TODOs.\n";
$iPara = 0;
foreach( $matches[0] as $match )
{
$iPara++;
$szResult .= "TODO #{$iPara}:\n";
$szResult .= htmlentities( $match );
}
}
else
{
$szResult = "On n'a <strong>PAS</strong> trouvé de TODO";
}
... donne comme résultat :
On a trouvé 1 TODOs. TODO #1: <!-- @todo Ici, je dois trouver ce qui manque -->