Opérateur Tilde dans les expressions régulières

je veux savoir ce que signifie 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 que signifie tilde: ~

il a dit que =~ est un opérateur perl qui signifie exécuter cette variable contre cette expression régulière.

mais pourquoi mon expression régulière contient deux tilde les opérateurs?

48
demandé sur Gumbo 2009-06-02 10:10:10

2 réponses

dans ce cas, c'est juste utilisé comme délimiteur.

généralement, en PHP, les premier et dernier caractères d'une expression régulière sont des" délimiteurs "pour marquer la position de départ et de fin d'une portion correspondante (dans le cas où vous voulez ajouter des modificateurs à la fin, comme ungreedy, 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 la deuxième délimiteur. Ceci est utile lorsque vous avez une occurrence du délimiteur normal dans le texte (par exemple, occurences de / dans le texte) - cela signifie que vous n'avez pas à faire des choses bizarres.

correspondant à " // "avec le délimiteur " / "

/\/\//

Matching " // "avec le délimiteur" # "

#//#

56
répondu Mez 2015-12-07 12:57:19

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. Dans PCRE (Perl Regular Expressions Compatible), ce que vous utilisez avec preg_* en PHP, le modèle est entré le long des options d'expression, comme ceci:

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

cependant, l'utilisation de "/" comme délimiteur dans ce cas est arbitraire - bien que la barre oblique vers l'avant soit populaire, elle peut être remplacée par n'importe quoi. Dans ton cas, c'est tilde.

6
répondu Nick 2009-06-02 06:18:05