Sette til regexes Den regex for den første delen er: /^ [a-za-Z] {3,18} $ /The regex for den andre delen er: /^ [0-9] {3,18} $ /The regex for den tredje delen er: /^ [_] {3,18} $ /Kombinere regexes I pausen ned delen, er de ovennevnte tre deler kombinert med uttrykket "og /eller" Det er ingen direkte måte å gjøre dette, så vi må slutte den. Dette er kombinert regex: /^ [a-za-Z0-9 _] {3,18} $ /Optimalisere Kombinert Regex Dette betyr forkorte kombinert regex. Legg merke til at klassen [a-za-Z0-9_] er forkortet til \\ w.
Den optimaliserte regex er: /^ [\\ w] {3,18} $ /backtracking Vi har sett hvordan å matche alternativer ved hjelp av vekslingen metategn, |. Når matchende alternativer, bruker Perl en prosess som kalles backtracking. Jeg vil illustrere dette med et eksempel. Betrakt det følgende uttrykk: "12345" = ~ /(124 | 123) (46 | 4 | 45) /I vil forklare tilbakesporing av forklare virkemåten av de ovennevnte uttrykk. Følgende trinn forklarer hvordan PHP løser uttrykket ovenfor. A. Det starter med det første tallet i den tilgjengelige strengen '1'. B.
Den prøver den første alternativ i den første gruppen '124'. C. Det ser matching av '1' etterfulgt av 'to'. Det er ok. D. Det legger merke til at '4' i regex samsvarer ikke '3' i den tilgjengelige streng - som er en blindvei. Så det backtracks to tegn i den tilgjengelige streng og plukker den andre alternativ i den første gruppen '123'. E. Det matcher '1' etterfulgt av 'to' etterfulgt av '3'. Den første gruppen er fornøyd. F. Den beveger seg videre til den andre gruppen, og plukker det første alternativet '46'. G. Det tilsvarer '4' i den tilgjengelige streng. H.
Men '6' i regex samsvarer ikke '5' i den tilgjengelige streng, så det er en blindvei. Det backtracks ett tegn i den tilgjengelige streng og plukker den andre alternativ i den andre gruppen '4'. I. '4' kamper. Den andre gruppe er tilfredsstilt. J. Vi er ved slutten av regex;