Si vous ne voulez pas capturer un groupe, faites précéder le contenu du groupe avec ":?". Pour empêcher le groupe "(un)" ci-dessus à partir d'être capturé, vous avez besoin "(?: Un)" pour le groupe. Le groupe reste valable dans le modèle avec son autre avantage, mais ce ne sont pas saisies. Le code suivant illustre cela: use strict; monarr = ("Ceci est un et qui est deux." ~ = /(?:one).*(two)/); print $ arr [0], "\\ n"; print $ arr [1], "\\ n"; La sortie du code est: deux Nous avons empêché le premier groupe, "(un)" d'être capturé en le transformant en «(?: Un)".
De la sortie, nous voyons que «un» de la chaîne disponible n'a pas été capturé, comme nous l'espérions. "deux" a été capturée, et il est le seul élément du tableau. Pour faire un groupe non-capture, utilisez la syntaxe suivante: (:? GroupContent) Y compris les modificateurs dans les groupes non-Capture Nous avons vu comment vous pouvez incorporer des modificateurs dans une expression régulière. Vous pouvez inclure un modificateur dans un groupe non-capture. Il ya deux façons de le faire. Disons que vous voulez inclure le modificateur, i dans le groupe sous non-capture "(?: Un)" ci-dessus.
Vous pouvez le faire comme ceci: un) L'expression suivante produit un match (:( i?): ". Ceci est ONE et qui est de deux" = ~ /(?:(?i)one).*(two)/Vous pouvez utiliser le code suivant pour tester: use strict; if (". Ceci est ONE et qui est deux" = ~ /(?:(?i)one).*(two)/) {print "assortie \\ n"; } Else {print "ne correspond pas \\ n"; } Modificateurs groupes que nous avons dit que mettre un modificateur dans une expression rationnelle est la même que celle ayant le modificateur juste à la fin de l'expression rationnelle. La question que vous pouvez avoir est la suivante:..
"Si le modificateur est dans un groupe, cela aurait-il son effet que dans le groupe ou dans l'ensemble regex Laissez-nous écrivons juste quatre scripts courts pour vérifier q