*(two)/) {print "assortie \\ n ";} else {print" ne correspond pas \\ n ";} Le regex ci-dessus est encore" /((?i)one).*(two)/ONE "est encore dans le" Notez que dans la chaîne disponible,. " les majuscules et les «deux», ce moment est dans le cas supérieure Matching ne se produit pas dans le code ci-dessus dans l'expression rationnelle «deux» est en abaisse cas;.. voilà pourquoi adaptation ne se produit pas.
Les deux programmes ci-dessus traitent de groupes de capture, serait non groupes de capture se comportent de la même manière? Nous allons utiliser deux programmes plus simples pour vérifier cela. Considérez ce qui suit: use strict; if (". Ceci est ONE et qui est deux" = ~ /(?:(?i)one).*(two)/) {print "assortie \\ n"; } Else {print "ne correspond pas \\ n"; } Le regex ci-dessus est "/(?:(?i)one).*(two)/". Notez que dans la chaîne disponible, "ONE" est en majuscules. Matching se produit dans le code ci-dessus. Ici nous avons affaire à un groupe non-capture.
Considérons le code suivant, qui est aussi avec un groupe non-capture: use strict; if (". Ceci est ONE et qui est de deux" = ~ /(?:(?i)one).*(two)/) {print "assortie \\ n"; } Else {print "ne correspond pas \\ n"; } Le regex ci-dessus est encore "/(?:(?i)one).*(two)/". Notez que dans la chaîne disponible, "ONE" est toujours dans le cas supérieure et «deux» est cette fois dans le cas supérieure. Matching ne se produit pas dans le code ci-dessus. Dans l'expression rationnelle «deux» est en abaisse cas; voilà pourquoi l'appariement ne se produit pas.
Eh bien, cela est un fait: si vous faites affaire avec la capture ou de groupes non-capture, un modificateur intérieur d'un groupe affecte uniquement ce groupe; il n'a pas d'incidence sur le reste de l'expression rationnelle. Cela est-il pour cette section. Et, finalement, nous sommes arrivés à la fin de la série. Nous avons vu tant de choses. Si vous avez compris la série, alors vous serez en mesure de faire beaucoup sur les expressions régulières en Perl. Votre problème immédiat