Expresii regulate java, blog despre criptare

Există încă două tipuri de cuantificatori, care se formează prin adăugarea unui sufix? (coincidență slabă sau incompletă) sau + ("lacomă", sau coincidență proprie) cu cuantificatorii de mai sus. Înlocuirea incompletă corespunde opțiunii cu cel mai mic număr posibil de caractere, iar propria - cu maximul posibil.

Clasa de modele este utilizată pentru manipularea simplă a șirurilor. Pentru manipularea mai complexă a șirurilor, se folosește clasa Matcher, discutată mai jos.

În clasa Pattern sunt declarate următoarele metode:

Matchermatcher (CharSequenceinput) - returnează Matcher.
cu care puteți găsi meciurile din linia de introducere.

Stringpattern () - Returnează șirul care se potrivește cu modelul.

String [] împărțit (CharSequenceinput) - împarte șirul de intrare. considerând că delimitatorul este un șablon.

Utilizând metoda meciurilor () din clasa de model pot fi verificate pentru conformitatea cu un întreg model de linie, dar dacă este necesar, pentru a găsi un șir de caractere de potrivire in cadrul, de exemplu, să identifice porțiuni care se potrivesc modelului, clasa de model nu poate fi utilizat. Pentru astfel de operațiuni, trebuie să utilizați clasa Matcher.

Starea inițială a unui obiect Matcher nu este definită. O încercare de a apela orice metodă de clasă pentru a prelua informații despre potrivirea găsită va duce la o eroare de IllegalStateException. Pentru a începe lucrul cu obiectul Matcher. trebuie să apelați una dintre metodele sale:

booleanmatches () - verifică dacă întregul șir se potrivește cu modelul;

booleanlookingAt () - încearcă să găsească o secvență de caractere începând de la începutul liniei și potrivind modelul;

booleanfind () sau booleanfind (intstart) - încearcă să găsească o secvență de caractere care se potrivesc cu modelul, oriunde în linie. Parametrul de pornire specifică poziția de pornire a căutării.

Uneori este necesar să resetați starea Matcher la cea originală, pentru aceasta este folosită metoda reset () sau reset (CharSequenceinput). care stabilește, de asemenea, o nouă secvență de caractere pentru a căuta.

Pentru a înlocui toate subsecvențele de caractere care se potrivesc cu un șablon cu un șir dat, puteți folosi replaceAll (String
înlocuire).

Pentru a limita căutarea la limitele secvenței de intrare, se folosește metoda regiune (intsart, intenție). și pentru a obține valoarea acestor limite - regionEnd () și regionStart (). Există mai multe metode asociate regiunilor:

MatcheruseAnchoringBounds (booleanb) - dacă este setat la true. atunci începutul și sfârșitul regiunii corespund simbolurilor ^ și, respectiv, $.

booleanhasAnchoringBounds () - verifică etanșeitatea frontierelor.

În expresia regulată, grupurile care ajută la izolarea unor părți ale subsecvenței găsite sunt utilizate pentru procesarea mai convenabilă a secvenței de intrare. În șablon, acestea sunt indicate de paranteze "(" și ")". Numărul grupurilor începe cu unul. Grupul zero coincide cu întreaga subsecventă găsită. Următoarele sunt metode pentru extragerea informațiilor despre grupuri.

intend () - returnează indexul ultimului caracter al subsecvenței care satisface modelul;

intend (intgroup) - returnează indexul ultimului caracter al grupului specificat;

Stringgroup () - returnează întreaga secvență care satisface modelul;

intgroupCount () - returnează numărul de grupuri;

intstart () - returnează indexul primului caracter al subsecvenței care satisface modelul;

intstart (intgroup) - returnează indexul primului caracter al grupului specificat;

booleanhitEnd () - Returnează true dacă sa ajuns la sfârșitul secvenței de intrare.

Următorul exemplu arată modul în care puteți utiliza capabilitățile clasei Pattern și Matcher pentru a găsi, analiza și întrerupe liniile.

publicclass DemoRegular

publicstaticvoid principal (String [] args)

// verificarea unui șir care să corespundă modelului

Modelul p1 = Pattern.compile ("a + y");

Matcher m1 = p1.matcher ("aaay");

boolean b = m1.matches ();

// căutați și selectați substringul specificat de model

Modelul p2 = Pattern.compile (regex);

Matcher m2 = p2.matcher (e);

// rupe linia în substring folosind un șablon ca separator

Modelul p3 = Pattern.compile ("\\ d + \\ s?");

p3.split ("java5tiger 77 java6mustang");

pentru (cuvintele cuvintele)

Ca rezultat, veți vedea:

Primul grup: abdcxyz

În primul caz, primul grup include toate simbolurile posibile, dar numărul minim de caractere pentru al doilea grup rămâne.

În cel de-al doilea caz, cel mai mic număr de simboluri este selectat pentru primul grup, deoarece este utilizată o potrivire slabă.

În cel de-al treilea caz, întregul grup va corespunde primului grup, iar pentru cel de-al doilea nu va exista un singur simbol, deoarece al doilea grup folosește o potrivire slabă.

În al patrulea caz, șirul nu se potrivește cu expresia obișnuită, deoarece pentru cele două grupuri este selectat cel mai mic număr de caractere.

În clasa Matcher, sunt declarate două metode utile pentru a înlocui subsecvențele găsite în șirul de intrare.

înlocuire) - metoda citește caracterele din chiuveta de intrare și le adaugă în sb. Citirea se oprește la start () - 1 poziție din meciul anterior, după care linia de înlocuire se adaugă la sb. Data viitoare când apelați această metodă, adăugați caractere, începând cu caracterul cu indexul end () al potrivirii anterioare.

StringBufferappendTail (StringBuffersb) - adaugă restul caracterelor din secvența de intrare în sb. În mod obișnuit, se numește după una sau mai multe apeluri către metoda appendReplacement ().

Articole similare