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

Regex grupperingar i Perl

{print "Matchade \\ n"; } Else {print "inte motsvaras \\ n"; } Print "\\ $ 1 är:" $ 1 "\\ n"; print "\\ $ 2:" $ 2 "\\ n"; Den tillgängliga strängen är "Detta är en och det är två." Låt oss titta på mönstret. Mönstret är /(one).*(two)/; det kommer att matcha alla sub sträng i tillgängliga sträng som börjar med "ett" och slutar med "två". Kom ihåg att punkt, följt av asterisken representerar vilken som helst uppsättning tecken. Observera att det finns två grupper i mönstret. Grupperna är (en) och (två).

I den tillgängliga strängen, har du sub strängen "ett" och sedan efter en bit, har du sub strängen "två". Gruppen (en) matchar under strängen "ett" i tillgängliga strängen. Gruppen "två" matchar understrängen "två", i det tillgängliga strängen. På grund av denna matchning är under strängen "ett" i tillgängliga strängen tilldelas intern variabel, $ 1; sub sträng, "två" i tillgängliga strängen är överlåten till intern variabel, $ 2. I koden, de sista två uttalanden skriva ut värdena för dessa två variabler.

Om du aldrig haft grupperna (parentes) skulle matcha förekommer fortfarande men ingenting skulle tilldela de interna variablerna ($ 1 och $ 2). Med andra ord, skulle inget fångas. Utgången av koden är: $ 1 är: en $ 2: två Du kan ha upp till 9 grupper (par av parenteser) i mönstret. Om det finns minst 9 understrängar i tillgängliga sträng som motsvarar 9 grupper i mönstret, då 9 understrängar i den tillgängliga strängen skulle tilldelas till $ 1, $ 2 ... $ 9 respektive. Det är den första matchas skulle gå till $ 1; den andra en till $ två, den tredje en till $ tre och så vidare.

Detta är hur du kommer ihåg eller fånga understrängar i tillgängliga strängen efter att matcha. Obs: Om det inte finns någon grupp, så skulle det inte finnas något att komma ihåg (ingen tilldelning kommer att ske); ingen fångst. Du behöver inte ha upp till 9 grupper i mönstret; Du kan ha valfritt antal mindre. Vad sägs om kapslade grupper Tänk på följande kod: använd strikt; if ("bokhållare, bokhållare och boka gå ihop.

" = ~ /bok (keeper (s |) |) /) {print "Matchade \\ n"; } Else {print "inte motsvaras \\ n"; } Print "\\ $ 1 är:" $ 1 "\\ n"; print "\\ $ 2:" $ 2 "\\ n"; print "\\ $ 3 är:" $ 3 "\\ n"; Det är produktionen av ovanstående kod: $ 1: djurhållare $ 2: s $ 3: Mönstret skulle matcha "bokhållare", "bokhållare" eller "bok". Men vi har två grupper; en inuti den andra. Det är dessa två grupper som kan bli ihågkommen. Det är därför för utgången, $ 3 har inget att visa, eftersom inge

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