De volgende code illustreert dit: use strict; mijnarr = ("Dit is een en dat is twee." = ~ /(?:one).*(two)/); afdruk $ arr [0], "\\ n"; afdruk $ arr [1], "\\ n"; De uitvoer van de code is: twee Wij verhinderd eerste groep '(een) "worden gerealiseerd, wordt omgevormd tot' (: een)". Van de uitgang, zien we dat "één" van de beschikbare snaar niet is vastgelegd, zoals verwacht. "twee" is gemaakt, en het is het enige element van de array.
Om een groep niet-capturing, gebruikt u de volgende syntaxis: (:? GroupContent) Inclusief Modifiers in Non-Capturing groepen We hebben gezien hoe je modifiers kunt insluiten in een reguliere expressie. Misschien wilt u een modifier in een niet-capturing groep omvatten. Er zijn twee manieren om dit te doen. Laat ons zeggen dat je wilt de modifier omvatten, i in de niet-vastleggen subgroep "(?: Één)" hierboven. Je kunt het doen als dit: een) De volgende expressie geeft een wedstrijd (:( i?): ". Dit is een en dat is twee" = ~ /(?:(?i)one).
*(two)/U kunt de volgende code gebruiken om te testen: use strict; if (". Dit is een en dat is twee" = ~ /(?:(?i)one).*(two)/) {print "Matched \\ n"; } Else {print "Niet Matched \\ n"; } Modifiers Groepen We hebben gezegd dat de invoering van een modificator in een reguliere expressie is hetzelfde als het hebben van de modifier alleen aan het einde van de reguliere expressie. De vraag die je kan hebben is dit:..
"Als de modifier is in een groep, zou het moeten zijn effect alleen in de groep of in de hele regex Laat ons gewoon schrijven vier korte scripts om te controleren of dit is de eerste: strikte gebruiken ; if (". Dit is een en dat is twee" = ~ /((?i)one).*(two)/) {print "Matched \\ n";} else {print "Niet Matched \\ n";} boven de reguliere expressie is "/((?i)one).*(two)/". Merk op dat in de beschikbare reeks, "ONE" is in hoofdletters. Matching optreedt in de bovenstaande code. Hier hebben we te maken met een capturing .
group Beschouw de volgende code nog steeds met een capturing gr