*   >> Lezen Onderwijs artikelen >> science >> programming

Het bouwen van een reguliere expressie in Perl

n de eerste groep '123'. E. Het past '1', gevolgd door '2', gevolgd door '3'. De eerste groep is tevreden. F. Het beweegt naar de tweede groep en pakt het eerste alternatief '46'. G. Het past de '4' in de beschikbare string. H. echter '6' in de reguliere expressie komt niet overeen met '5' in de beschikbare reeks, dus dat is een doodlopende weg. Het krabbelt één teken in de beschikbare string en pakt de tweede alternatief in de tweede groep '4'. I. '4' wedstrijden. De tweede groep is tevreden. J.

We zijn aan het eind van de reguliere expressie; we zijn klaar! We hebben geëvenaard '1234' uit de beschikbare string "12345". Er zijn twee dingen op te merken over dit proces. Ten eerste, het derde alternatief in de tweede groep 45 'laat ook een gelijke, maar het proces gestopt voordat het moet het derde alternatief - op een gegeven tekenpositie, meest linkse overwint. Ten tweede, het proces kon een match in het eerste tekenpositie van de beschikbare string '1'.

Als er geen wedstrijden op de eerste positie, zou Perl naar het tweede teken positie '2' en proberen de wedstrijd weer helemaal opnieuw. Perl geeft en verklaart "12345" = ~ /(124 | 123) (46 | 4 | 45) /, vals te zijn, wanneer alle mogelijke paden dat mogelijk karakterposities zijn uitgeput. De x Modifier Dit modifier is door de invoering x (in kleine letters) net naast de tweede schuine streep van de reguliere expressie ingesteld.

Dat wil zeggen: /patroon /x Wwhitespace gegevens tekens in het patroon zijn totaal genegeerd, behalve wanneer ontsnapt of in een karakter klasse, wanneer deze modifier is ingesteld. Wanneer deze modifier is ingesteld, karakters tussen een onbeschermde # buiten een karakter klasse en de volgende \\ n karakter, inclusief, worden ook genegeerd. Ik zal dit illustreren. Het zegt witruimte gegevens tekens in het patroon zijn totaal genegeerd, behalve wanneer ontsnapt of binnen een tekenklasse. Denk aan de beschikbare string: $ availableString = "Ik ben een man zitten.

"; De volgende twee expressies met de x modifier produceert geen een wedstrijd. $ availableString = ~ /man zitten /x Dit komt omdat in de reguliere expressie, de single-ruimten tussen "man" en "zitten" en "zitten" en "down" zijn niet herkend, met de aanwezigheid van de x modifier. Als u tegelijkertijd de bijbehorende ruimten in de beschikbare reeks verwijdert u een wedstrijd, met de x modifier hebben. De volgende beschikbare string een match met de bovenstaande reguliere expressie te produceren: $ availableString = "Ik ben

Page   <<  [1] [2] [3] [4] [5] >>
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.