Question

    

Cette question a déjà une réponse ici:

         

Existe-t-il un utilitaire permettant de convertir POSIX en PCRE pour PHP? Le manuel PHP sur PCRE me laisse un peu perplexe et, bien que je vais essayer de trouver plus d'informations sur PCRE, je me demandais si quelqu'un avait conçu un tel utilitaire.

Ou, si quelqu'un voulait expliquer comment convertir les éléments suivants, cela conviendrait également:

ereg("^#[01-9A-F]{6}<*>quot;, $sColor)

Mais expliquez s'il vous plaît comment cela se fait, ne vous contentez pas de me dire la conversion.

Était-ce utile?

La solution

preg_match("/^#[01-9A-F]{6}$/", $sColor)
Dans ce cas, il vous suffit d'ajouter les deux délimiteurs.

En Perl, vous pouvez écrire quelque chose comme

if ( s =~ /x.+y/ )
{ print "match"; }
Comme vous pouvez le voir, l'expression régulière réelle est encapsulée dans //. Si vous souhaitez définir une option sur l'expression régulière, vous la mettez après le deuxième /, par exemple. passage de l'expression à ungreedy par défaut /x.+y/U
pcre imite maintenant ce comportement. Bien que vous deviez appeler une fonction, vous devez également fournir les délimiteurs et définir les options après le deuxième délimiteur. En perl, le délimiteur doit être /, avec pcre, vous pouvez choisir plus librement
preg_match("/^#[01-9A-F]{6}$/", $sColor)
preg_match("!^#[01-9A-F]{6}$!", $sColor)
preg_match("#^\#[01-9A-F]{6}$#", $sColor) // need to escape the # within the expression here
preg_match("^#[01-9A-F]{6}$", $sColor)
de la même manière pour pcre, il est préférable de choisir un caractère qui n'apparaît pas dans l'expression.

Autres conseils

preg_match ("/ ^ # [01-9A-F] {6} $ / D", $ sColor)

Notez le D . modificateur . Les gens l'oublient tout le temps. Sans lui, $ autorisera un caractère de nouvelle ligne final. Une chaîne du type " # 000000 \ n " passerait. C’est une différence subtile entre POSIX et PCRE.

Et, bien sûr, [01-9] peut être réécrit en [0-9] .

Au fait, PHP supporte les expressions régulières PCRE et POSIX. Voici la section du manuel PHP sur les expressions rationnelles POSIX, vous n'avez donc pas à les convertir: http://www.php.net/manual/en/book.regex.php

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top