Faire correspondre les instances de regex en dehors des guillemets
Bien qu'il soit généralement difficile de faire correspondre les instances de regex qui ne sont pas placées entre guillemets, il existe en effet un solution possible.
Pour y parvenir, on considère la propriété suivante : un mot est hors guillemets s'il y a un nombre pair de guillemets après lui. Cette propriété peut être capturée à l'aide d'une assertion d'anticipation :
\+(?=([^"]*"[^"]*")*[^"]*$)
Cependant, cette assertion ne prend pas en compte les guillemets échappés. Pour les gérer, nous modifions le modèle pour prendre en compte à la fois les caractères et les barres obliques inverses tout en ignorant les caractères échappés par des barres obliques inverses :
\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)
Ce modèle complexe nous permet d'identifier toutes les instances du caractère ' " qui ne sont pas entre guillemets, excluant efficacement les séquences entre guillemets doubles et celles échappées. Bien que le modèle puisse paraître quelque peu énigmatique, il nous permet d'effectuer une correspondance précise en dehors des guillemets.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!