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

Regex regroupements dans Perl

ure sous les chaînes dans la chaîne disponible après correspondant. Remarque: Si il n'y a pas de groupe, alors il n'y aurait rien à retenir (pas d'affectation se produit); aucune capture. Vous ne devez pas avoir jusqu'à 9 groupes dans la structure; vous pouvez avoir un nombre moins. Qu'en est-il des groupes imbriqués considérez le code suivant: use strict; if ("teneurs de livres, comptable et livre vont ensemble.

" = ~ /livre (gardien (s |) |) /) {print "assortie \\ n"; } Else {print "ne correspond pas \\ n"; } Print "\\ 1 $ est:", $ 1, "\\ n"; print "\\ $ 2 est:", $ 2, "\\ n"; print "\\ $ 3 est:", $ 3, "\\ n"; L'est sortie du code ci-dessus: 1 $ est: gardiens $ 2 est: s 3 $ est: Le motif serait correspondre "comptables", le "comptable" ou "livre". Cependant, nous avons deux groupes; une dans l'autre. Ce sont ces deux groupes qui peuvent être rappelés. Voilà pourquoi pour la sortie, 3 $ n'a rien à afficher, comme rien ne lui a été assigné.

Le groupe externe dans le motif est cat (s |) et le groupe interne est (s |). Le groupe externe correspond à "chats" en "housecats". Le groupe interne correspond à "s" à la fin de housecats "". Permettez-moi de faire un peu plus d'explications sur ces capture. "(gardien (s |) |)" signifie "gardien (s |)" ou rien, et «gardien (s |)» signifie «gardiens» ou «gardien»; Ainsi, "gardiens" à côté de "livre" est capturé. "(s |)" est un groupe et un groupe quelconque peut être capturée; cela signifie «s» ou rien.

Notez qu'il est pas nécessairement le groupe qui est adapté; il est le motif qui est compensée. La chaîne de sous-mesure correspondance qui a notre "s" est teneurs de livres. Comme "comptables" est égalé, notre "s" est capturé. Capture et l'appariement ne sont pas les mêmes choses. Après appariement se produit, si il n'y a aucun groupe dans la chaîne de sous correspond dans la chaîne disponible, le groupe est capturé (affectée à une variable).

Capturer dans un contexte de liste Dans un contexte de liste, un match, /regex /, avec des groupements sera de retour la liste des valeurs de groupe apparié ($ 1, $ 2, ...). Je illustrer cela en vous montrant comment faire correspondre le temps; ceci est un exemple important. Le produit suivant un match. ($ mes heures, mes $ minutes, $ secondes mes) = ($ thetime = ~ /(\\ d \\ d): (\\ d \\ d): (\\ d \\ d) /); Cette déclaration est pas dans le cas condition.

Le code suivant illustre cela: use strict; my $ temps = "10:20:15"; ($ mes heures, mes $ minutes, $ secondes mes) = ($ thetime =

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