Bienvenue sur Think-Underground.com

Aller au contenu | Aller au menu | Aller à la recherche

vendredi, février 5 2010

Quelques phrases courantes…

Voici quelques phrases à placer dans des conversations :

  • Les coureurs en piste parlent à peine.
  • J'ai du tracas jusqu'au cou.
  • Elle s'est tordu l'humérus.
  • J'aime l'escalope sur une belle salade.
  • J'apprécie vachement son frangin.
  • Les vrais cabots ne se taisent jamais.
  • Les canicules m'emballent.

Si vous avez d'autres contrepèteries « casual » ça m'intéresse.

Les mots du jour : eschatologie, contumace, fomente, postprandial

Allez, hop ! quatre de plus :

  • eschatologie à ne pas confondre avec l'escapologie ;
  • contumace qui n'est pas un ordre injurieux ;
  • fomente qui n'a rien à voir avec les crêpes ;
  • et postprandial qui pour le coup peut être en lien avec des crêpes…

mardi, février 2 2010

Les mots du jour : cyclothimique, probité, garroté, sinécure

Quelques petits mots de vocabulaire :

Je vous laisse la joie de construire une phrase avec ces quatre mots ;)

vendredi, janvier 29 2010

Énigme moyenne : Quelle vitesse ?

Attention, je ne suis pas responsable de toute explosion de cerveau liée à cette énigme.

Un cycliste sait qu'en roulant à 30 km/h, il arrive une heure avant midi. En roulant à 20km/h il arrive une heure après midi. À quelle allure doit il rouler pour arriver à midi ?

Attention, l'intuition vous portera probablement en erreur, sinon ce ne serait pas drôle.

Je vous suggère deux types de raisonnement. D'abord logique, sans poser les calculs. Puis confirmez ce raisonnement avec une valeur sonnante et trébuchante.

Lire la suite...

samedi, janvier 23 2010

Changer facilement de dictionnaire dans Thunderbird

Changer de dictionnaire dans Thunderbird J'écris quotidiennement des courriels en anglais ou en français, et je trouve l'interface de Thunderbird peu pratique pour changer rapidement de dictionnaire.

Heureusement il existe une petite extension du nom de Dictionary Switcher qui permet d'adapter le dictionnaire en un clic.

Voilà, je ne peux déjà plus m'en passer :P

jeudi, janvier 21 2010

De l'intérêt des groupes de capture dans une expression régulière

N.B. : les exemples proposés dans cet article sont en PHP, mais transposable dans la majorité des langages qui utilisent des expressions régulières compatibles Perl (PCRE).


Les groupes de capture, dans les expressions régulières, servent typiquement à faire des replacements. Par exemple pour inverser les noms et prénoms dans une liste, on réalise deux captures (nom et prénom) que l'on référence par leur numéro respectifs (\1 et \2) dans la chaîne de substitution.

<?php
  // Exemple 1
  // Inversion d'un nom et d'un prénom
 
  $chaine = <<<FIN 
  Dupont, Marcel
  Laforêt, Hugo
  Lemoine, Jean-Marc
FIN;
 
  echo preg_replace('/^(.*),\s(.*?)\r?$/m', '\2 \1', $chaine);
 
/*
  Résultat :
    Marcel Dupont
    Hugo Laforêt
    Jean-Marc Lemoine
*/
?>

Les groupes de capture ont une deuxième utilisation, souvent ignorée, lorsqu'ils sont référencés directement au sein de l'expression régulière. En effet, imaginons que l'on cherche toutes les adresses des images d'une page. En français, cela se traduit par :

  • je cherche tout ce qui commence par scr= ;
  • suivi d'un guillemet ou d'une apostrophe ;
  • suivi d'une adress ;
  • puis de nouveau d'un guillemet ou d'une apostrophe (mais nécessairement le même caractère que précédemment).

Pour traduire la nécessité d'encadrer l'adresse par deux apostrophe ou deux guillemets (mais pas un mélange), il est possible d'écrire deux fois l'expression régulière (une pour chaque cas), mais une solution plus propre consiste à utiliser la référence de la capture directement dans l'expression régulière (et non la chaine de substitution). Cela donne :

<?php
  // Exemple 2
  // Recherche adresses images dans une page
 
  $src = <<<HTML
  <img src="test_guillemet.png" alt="" />
  <img src='test_apostrophe.png' alt='' />
HTML;
 
  preg_match_all('/src=(["\'])(.*?)\1/mi', $src, $matches);
  foreach ( $matches[2] as $url ) {
    echo $url;
  }
 
/*
  Résultat :
    test_guillemet.png
    test_apostrophe.png
*/
?>

Notez enfin qu'il est possible de donner un nom aux captures pour rendre le code plus lisible et plus robuste. Une capture s'écrit alors (?P<nom>…) et on la référence en utilisant (?P=nom). L'exemple ci-dessus s'écrirait alors :

<?php
  // Exemple 3
  // Recherche adresses images dans une page
  // avec groupes de capture nommés
 
  $src = <<<HTML
  <img src="test_guillemet.png" alt="" />
  <img src='test_apostrophe.png' alt='' />
HTML;
 
  preg_match_all(
    '/src=(?<delimiteur>["\'])(?P<url>.*?)(?P=delimiteur)/mi', 
    $src, $matches
  );
  foreach ( $matches['url'] as $url ) {
    echo $url;
  }
 
/*
  Résultat :
    test_guillemet.png
    test_apostrophe.png
*/
?>

Voilà. N'hésitez pas à utiliser les commentaires pour réagir, signaler une erreur ou poser une question. Pour en apprendre plus sur les expressions régulières, je vous recommande fortement le site regular-expressions.info. Ne négligez pas cet outil formidablement puissant !

- page 1 de 105