*   >> Lezen Onderwijs artikelen >> science >> programming

Meer reguliere expressies in Perl

"\\ n"; afdruk $ arr [1], "\\ n"; Het is de output van de bovenstaande code: een twee De output bestaat uit de woorden "een" en "twee". Deze elementen vastgelegd en opgeslagen in de arrayarr. Je mag niet willen elke groep vast te leggen. Als u niet wilt dat een groep vastleggen, voorafgaan aan de inhoud van de groep ":?". Om de groep te voorkomen "(één)" hierboven van wordt vastgelegd, moet je "(?: Één)" voor de groep. De groep blijft gelden in de patroon met zijn andere voordelen, maar het is niet meegenomen.

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

Page   <<  [1] [2] [3] [4] [5] >>
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.