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

Att bygga ett reguljärt uttryck i Perl

fror från 0 till 9 och /eller understreck, _. Vi insisterar också att namnet inte får vara kortare än 3 tecken eller större än 18 tecken. I det här exemplet har vi ålagts specifikationsuppgifter. Att bryta ner problemet i mindre delar namn består av * bokstäver i nedre eller övre fallet mellan 3 till 18 bokstäver, inklusive, och /eller * siffror från 0 till 9 mellan 3 till 18 siffror, inklusive, och /eller * understreck mellan 3 till 18 siffror, inklusive. Detta innebär att du kan ha upp till 18 streck för ett namn. Låt oss tillåta att för enkelhets skull.

* Vi måste begränsa det tillgängliga strängen till 3 eller 6 tecken. Översätta in regexes Den regex för den första delen är: /^ [a-zA-Z] {3,18} $ /Den regex för den andra delen är: /^ [0-9] {3,18} $ /The regex för den tredje delen är: /^ [_] {3,18} $ /Kombinera regexes I bryta ner avsnittet är ovanstående tre delar i kombination med frasen "och /eller" Det finns inget direkt sätt att göra detta, så vi måste sluta det. Detta är den kombinerade regex: /^ [a-zA-Z0-9 _] {3,18} $ /Optimera Kombinerade Regex Detta innebär att förkorta den kombinerade regex.

Lägg märke till att klassen [a-zA-Z0-9_] förkortas \\ w. Den optimerade regex är: /^ [\\ w] {3,18} $ /Backtracking Vi har sett hur man matcha alternativ med hjälp av växlingen metatecken, |. När matchande alternativ, använder Perl en process som kallas backtracking. Jag kommer att illustrera detta med ett exempel. Tänk på följande uttryck: "12345" = ~ /(124 | 123) (46 | 4 | 45) /Jag kommer att förklara backa genom att förklara driften av ovanstående uttryck. Följande steg förklarar hur PHP löser ovanstående uttryck. A. Det börjar med det första numret i den tillgängliga strängen "1". B.

Det försöker det första alternativet i den första gruppen "124". C. Den ser matchningen av "1" följt av "2". Det är okej. D. Det märker att "4" i regex matchar inte "3" i den tillgängliga strängen - som är en återvändsgränd. Så det backtracks två tecken i snöre och plockar det andra alternativet i den första gruppen "123". E. Den matchar "1" följt av "2" följt av "3". Den första gruppen är uppfyllt. F. Det går vidare till den andra gruppen och plockar det första alternativet '46'. G. Det matchar "4" i det tillgängliga strängen. H.

Men "6" i det reguljära uttrycket matchar inte "5" i den tillgängliga strängen, så det är en återvändsgränd. Det backtracks ett tecken i det tillgängliga strängen och plockar det andra alternativet i den andra gruppen "4". I. "4" matcher. Den andra

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