51 votes

Tilde opérateur dans les expressions Régulières

Je veux savoir quel est le sens de l'opérateur tilde dans les expressions régulières.

J'ai cette déclaration:

if (!preg_match('~^\d{10}$~', $_POST['isbn'])) {
    $warnings[] = 'ISBN should be 10 digits';
}

J'ai trouvé ce document expliquant ce tilde signifie: ~

Il a dit qu' =~ est un opérateur de perl qui signifie exécuter cette variable à l'encontre de cette expression régulière.

Mais pourquoi est-ce que mon expression régulière contient deux tilde opérateurs?

60voto

Mez Points 9744

Dans ce cas, c'est tout simplement être utilisé comme un délimiteur.

Généralement, en PHP, le premier et le dernier caractère d'une expression régulière sont des "séparateurs" pour marquer le début et la fin de la position d'un appariement proportion (dans le cas où vous souhaitez ajouter des modificateurs à la fin, comme moins gourmand, etc)

Généralement, PHP fonctionne ce à partir du premier caractère dans une chaîne qui se veut une expression régulière, correspondant à la deuxième occurrence de ce que le second délimiteur. Ceci est utile, par exemple, lorsque vous avez un accident de la normale délimiteur dans le texte (par exemple, les occurrences de / dans le texte) - cela signifie que vous n'avez pas à faire maladroite choses.

Correspondant de "//" avec le délimiteur défini sur "/"

/\/\//

Correspondant de "//" avec le délimiteur "#"

#//#

7voto

Nick Points 1082

Dans ce cas, ça ne veut rien dire. C'est tout simplement de délimiter le début et la fin de votre modèle. En PCRE (Perl Compatible Regular Expressions), qui est ce que vous utilisez avec la preg_* en PHP, le motif est entrée le long de côté l'expression options, comme:

preg_match("/pattern/opt", ...);

Cependant, l'utilisation de "/" comme séparateur dans ce cas est arbitraire, bien que la barre oblique est populaire, il peut être remplacé par n'importe quoi. Dans votre cas, c'est un tilde.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X