L'écriture d'expressions régulières peut parfois devenir pénible. Heureusement, des petits scripts existent pour nous faciliter la vie. C'est le cas de VerbalExpressions qui va vous permettre d'écrire des expressions régulières (regex) très facilement.

On l'a vu dans un précédent article, des outils existent pour tester ses expressions régulières.

L'objectif du script présenté est de ne plus utiliser les symboles relatifs aux expressions régulières. Ces derniers sont alors remplacés par de simples mots-clés tels que : anything, maybe, then, etc...

VerbalExpressions se décline en plusieurs langages : JavaScript, PHP, Python mais il a aussi été porté pour le Rust ou PowerShell par exemple.

Dans cet article, je vais utiliser la version pour PHP mais le principe est le même pour les autres langages.

Installation de PHPVerbalExpressions

L'installation peut se faire avec Composer ou en récupérant le script PHP directement depuis le dépôt GitHub.

Avec Composer, il suffit d'ajouter cette ligne dans la section require :

"verbalexpressions/php-verbal-expressions": "dev-master"

Puis, un simple composer update suffira pour ajouter le script PHPVerbalExpressions à votre projet.

Enfin, dans votre script PHP, vous devrez inclure soit l'autoload de Composer (vendor/autoload.php), soit le fichier VerbalExpressions.php si récupéré à la mimine.

Exemples d'utilisations

Dans l'exemple ci-dessous, je teste la validité d'une URL :

<?php
require 'vendor/autoload.php';

use VerbalExpressions\PHPVerbalExpressions\VerbalExpressions;

$regex_url = new VerbalExpressions;

$regex_url 
    ->startOfLine()
    ->then('http')
    ->maybe('s')
    ->then('://')
    ->maybe('www.')
    ->anythingBut(' ')
    ->endOfLine();

if ($regex_url->test('http://blog.shevarezo.fr'))
    echo 'URL valide';
else
    echo "invalid url";

echo '<br>';
echo 'Regex générée : '.$regex_url->getRegex();

Vous voyez, c'est plus simple que d'écrire la Regex ! La lecture est aussi plus aisée...

Un autre exemple pour faire un preg_replace plus facilement :

<?php
require 'vendor/autoload.php';

use VerbalExpressions\PHPVerbalExpressions\VerbalExpressions;

$regex = new VerbalExpressions;

// Remplace "je hais" par "J'adore" :)
echo $regex
    ->clean(array("modifiers" => "i"))
    ->find('je hais')
    ->replace('Je hais les expressions régulières !', 'J\'adore');

D'autres méthodes sont disponibles, comme par exemple :

  • tab() : correspond au caractère de tabulation
  • word() : correspond au \w (lettres, nombres et underscores)
  • anything() : accepte n'importe quel caractère

Pour plus d'explications sur les méthodes disponibles, le Wiki est à votre disposition.

Conclusion

Les scripts proposés par VerbalExpressions sont très intéressants et peuvent vous éviter de vous arracher quelques cheveux dans certaines situations.