*   >> Lecture Éducation Articles >> science >> la programmation

Plusieurs expressions régulières dans Perl

(? I) z /et /xyz /je veux dire la même chose. Groupes non-capture Un groupe est un texte entre parenthèses dans regex. Par défaut, un tel texte est capturé dans une variable ou la liste sur le côté gauche de l'opérateur = ~. Considérons le code suivant: use strict; monarr = ("Ceci est un et qui est deux." ~ = /(one).*(two)/); print $ arr [0], "\\ n"; print $ arr [1], "\\ n"; La est la sortie du code ci-dessus: un deux La sortie se compose des mots, «un» et «deux». Ce sont des éléments capturés et stockés dans le tableau,arr. Vous ne pouvez pas vouloir capturer chaque groupe.

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

Page   <<  [1] [2] [3] [4] [5] >>
Copyright © 2008 - 2016 Lecture Éducation Articles,https://lecture.nmjjxx.com All rights reserved.