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

Regex grupperingar i Perl

i början av tillgängliga String i grupp Låt oss titta på fallet under strängar med gemensam del där matchningen måste ske i början av den tillgängliga strängen. Betrakta följande mönster: /(^ x | y) z /Förankringsmetatecken ^ används för att matcha det reguljära uttrycket i början av den tillgängliga strängen. Ovanstående mönster matchar "XZ" i början av den tillgängliga strängen eller "yz" någonstans i snöre.

Följande uttryck matchar: "xy 5678" = ~ /(^ x | y) z /"34 yz 56 G" = ~ /(^ x | y) z /Mer om Sub Strings med gemensamma delar Föreställ dig att du vill matcha "bok" eller "bookkeeper" eller "bokhållare". Under strängen "bok" förekommer i de tre fraser (under strängar). Under sträng "bokhållare" förekommer i två av de fraser; och sub sträng bokhållare förekommer i endast en av de fraser. Vårt mål i detta avsnitt är att utveckla en effektiv mönster för att matcha under strängar som de tre ovan.

Du kan göra detta: /bok | bokförare | bokhållare /Problemet här (ineffektivitet) är att du måste skriva "boken" tre gånger och du måste skriva "keeper" två gånger. Följande mönster är effektiv: /bok (keeper (s |) |) /Först och främst notera att du har en kapslad grupp; grupper kan kapslas. Det finns också två alternering metatecken, |; en i en inre kapslad grupp; den andra inuti den yttre gruppen. I det inre kapslade gruppen har Perl att välja mellan "s" eller ingenting. I den yttre gruppen, har fortfarande Perl att välja mellan "keeper (s |)" eller ingenting. "bok" kommer alltid väljas.

På detta sätt kommer Perl matcha "bok", "bookkeeper" eller "bokhållare". Situationen här liknar den första situationen ovan, men är mer komplex här. Fånga Matcher grupperingen metatecken (), det vill säga, parenteser också tjäna en annan helt annat syfte: de tillåter fångst av understrängar i den tillgängliga sträng som matchas. Tja, är mönstret inte vanligtvis en exakt ord eller en exakt fras. Efter matchningen har skett med den tillgängliga strängen, kan du veta den exakta ord eller en fras i den tillgängliga sträng som matchades? Ja, kan du vet detta, och det är tack vare gruppering.

Upp till 9 grupper i ett mönster kan komma ihåg när matchning inträffar. Med andra ord, kan du veta upp till 9 exakt understrängar i snöre, när matchning har inträffat. Perl har många interna variabler, varav 9 är $ 1, $ 2, $ 3, $ 4, $ 5, $ 6, $ 7 och $ 9. Låt oss titta på ett exempel innan vi fortsätter. Tänk på följande kod: använd strikt; if (". Detta är en och det är två" = ~ /(one).*(two)/)

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