*   >> Læs Uddannelse artikler >> science >> programming

Opbygning af et regulært udtryk i Perl

a 0 til 9 og /eller understregning, _. Vi insisterer også, at navnet ikke må være mindre end 3 tegn eller større end 18 tegn. I dette eksempel har vi indført de specifikationsændringer. Nedbryde problem i mindre dele Name består af * bogstaver i alfabetet i nedre eller øvre sag mellem 3 til 18 bogstaver, inklusive, og /eller * cifre fra 0 til 9 mellem 3 til 18 cifre, inklusive, og /eller * understregningstegnet mellem 3 til 18 cifre, inklusive. Det betyder, du kan have op til 18 understregninger for et navn. Lad os tillade, for enkelhed.

* Vi skal begrænse den tilgængelige streng til 3 eller 6 tegn. Oversætte ind regexes Den regex for den første del er: /^ [a-zA-Z] {3,18} $ /regex for den anden del er: /^ [0-9] {3,18} $ /Den regex for tredje del er: /^ [_] {3,18} $ /kombinere regexes I pausen ned afsnit er de tre ovennævnte del kombineret med sætningen, "og /eller" Der er ingen direkte måde at gøre dette, så vi er nødt til at udlede det. Dette er den kombinerede regex: /^ [a-zA-Z0-9 _] {3,18} $ /Optimering af den kombinerede Regex Det betyder forkorte den kombinerede regex. Bemærk at klassen [a-zA-Z0-9_] er forkortet til \\ w.

Den optimerede regex er: /^ [\\ w] {3,18} $ /trækker i land Vi har set, hvordan at matche alternativer ved hjælp af vekslen metategn, |. Når matchende alternativer, bruger Perl en proces kendt som regression. Jeg vil illustrere dette med et eksempel. Overvej følgende udtryk: "12345" = ~ /(124 | 123) (46 | 4 | 45) /Jeg vil forklare tilbageskridt ved at forklare driften af ​​ovenstående udtryk. Følgende trin forklarer, hvordan PHP løser ovenstående udtryk. A. Det begynder med det første nummer i tilgængelige strengen '1'. B. Det forsøger det første alternativ i den første gruppe «124«. C.

Det ser matchning af '1' efterfulgt af '2'. Det er i orden. D. Det bemærker, at '4' i regex ikke passer '3' i den tilgængelige streng - det er en blindgyde. Så det tilbagekalder to tegn i den tilgængelige streng, og henter det andet alternativ i den første gruppe «123«. E. Det matcher '1' efterfulgt af '2' efterfulgt af »3«. Den første gruppe er tilfreds. F. Det går videre til den anden gruppe, og henter det første alternativ «46 '. G. Det matcher '4' i den tilgængelige streng. H. Men '6' i regex matcher ikke '5' i den tilgængelige streng, så det er en blindgyde.

Det tilbagekalder et tegn i den tilgængelige streng, og henter det andet alternativ i den anden gruppe '4'. I. '4' kampe. Den anden gruppering er tilfreds. J. Vi er i slutningen af ​​regex; v

Page   <<  [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Læs Uddannelse artikler,https://uddannelse.nmjjxx.com All rights reserved.