*   >> läser Utbildning artiklar >> science >> programming

Fler Reguljära uttryck i Perl

nte fångas. Följande kod illustrerar detta: använd strikt; minarr = ("Det här är ett och det är två." = ~ /(?:one).*(two)/); print $ arr [0] "\\ n"; print $ arr [1], "\\ n"; Utgången av koden är: två Vi hindrade den första gruppen, "(en)" från att fångas genom att omvandla den till "(:? En)". Från utgången, ser vi att "en" av de tillgängliga strängen inte har tagits, som vi förväntade oss. "två" har fångats, och det är det enda elementet i arrayen.

För att göra en grupp icke-fånga, använder du följande syntax: (:? GroupContent) Inklusive Modifiers Icke-Fånga grupper Vi har sett hur du kan bädda in modifierings i ett reguljärt uttryck. Du kanske vill inkludera en modifierings i en icke-hämtad grupp. Det finns två sätt att göra detta. Låt oss säga att du vill inkludera modifierings jag i den icke-fånga undergruppen "(:? En)" ovan. Du kan göra det så här: en) Följande uttryck producerar en match (:( jag?): ". Detta är en och det är två" = ~ /(?:(?i)one).*(two)/Du kan använda följande kod för att testa: Använd strikt; if (".

Detta är en och det är två" = ~ /(?:(?i)one).*(two)/) {print "Matchade \\ n"; } Else {print "inte motsvaras \\ n"; } Modifierare i grupp Vi har sagt att sätta en modifierare i ett reguljärt uttryck är detsamma som att ha modifierings precis i slutet av regex. Frågan du kan ha är:.. "Om modifieringsmedlet är i en grupp, skulle det ha sin verkan endast i gruppen eller i hela regex Låt oss bara skriva fyra korta skript för att bekräfta att detta är den första: använd strikt if (". Detta är en och det är två" = ~ /((?i)one).

*(two)/) {print "Matchade \\ n";} else {print "inte motsvaras \\ n";} regex ovan är "/((?i)one).*(two)/". Notera att i det tillgängliga strängen "ONE" är i versaler. Matchningen sker i ovanstående kod. Här har vi att göra med en infångande . grupp Tänk på följande kod fortfarande med en infångande grupp: använd strikt if (". Detta är en och det är två" = ~ /((?i)one).*(two)/) {print "matchade \\ n ";} else {print" inte motsvaras \\ n ";} Den regex ovan är fortfarande" /((?i)one).*(two)/ONE "är fortfarande i" Observera att i det tillgängliga sträng.

" versaler och "två", är denna gång i versaler Matching inte förekommer i koden ovan I regex "två" i sänker fall,.. det är därför matchning inte sker. Ovanstående två programmen behandlar fånga grupper, skulle icke-fånga grupper beter sig på samma sätt? Vi ska använda ytterligare två enkla program för att verifiera detta. Tänk på följande: Använd strikt; if (". Detta är en och de

Page   <<  [1] [2] [3] [4] >>
Copyright © 2008 - 2016 läser Utbildning artiklar,https://utbildning.nmjjxx.com All rights reserved.