logo

Reguliarūs reiškiniai Java

„Java“ sistemoje „Regular Expressions“ arba „Regex“ (trumpiau) yra API, skirta apibrėžti eilučių šablonus, kurie gali būti naudojami ieškant, manipuliuojant ir redaguojant „Java“ eilutę. El. pašto patvirtinimas ir slaptažodžiai yra keletas eilučių sričių, kuriose „Regex“ plačiai naudojamas apribojimams apibrėžti. Reguliarūs reiškiniai Java pateikiami pagal java.util.regex paketą. Tai susideda iš 3 klasės ir 1 sąsaja . The java.util.regex paketą daugiausia sudaro šios trys klasės, kaip parodyta toliau lentelės formatu:

Regex klasės ir sąsajos

Regex Java pateikia 3 klases ir 1 sąsają, kurios yra tokios:



  1. Šablonų klasė
  2. atitikmenų klasė
  3. PatternSyntaxException klasė
  4. MatchResult sąsaja

Daugiau supratimo galima suprasti iš toliau pateikto paveikslėlio taip:

Taip ne. Klasė/sąsaja apibūdinimas
1. Šablonų klasė Naudojamas modeliams apibrėžti
2. atitikmenų klasė Naudojamas teksto atitikimo operacijoms atlikti naudojant šablonus
3. PatternSyntaxException klasė Naudojamas sintaksės klaidoms nurodyti reguliariosios išraiškos šablone
4. MatchResult sąsaja Naudojamas rungtynių operacijos rezultatui pavaizduoti

Šablonų klasė

Ši klasė yra reguliariųjų išraiškų, kurios gali būti naudojamos įvairiems šablonų tipams apibrėžti, rinkinys, nepateikiant viešųjų konstruktorių. Tai galima sukurti naudojant kompiliavimo () metodą, kuris priima reguliariąją išraišką kaip pirmąjį argumentą, taip grąžindamas šabloną po vykdymo.



Taip ne. Metodas apibūdinimas
1. kompiliuoti (eilutės reguliarusis reiškinys) Jis naudojamas norint sudaryti pateiktą reguliariąją išraišką į šabloną.
2. kompiliuoti (eilutės reguliarusis reiškinys, int vėliavėlės) Jis naudojamas norint sudaryti pateiktą reguliariąją išraišką į šabloną su nurodytomis vėliavėlėmis.
3. vėliavėlės () Jis naudojamas grąžinti šio modelio atitikties vėliavėles.
4. atitikmuo (CharSequence įvestis) Jis naudojamas norint sukurti atitikmenį, kuris atitiks nurodytą įvestį su šiuo modeliu.
5. atitinka (Eilutės reguliarusis reiškinys, CharSequence įvestis) Jis naudojamas duotai reguliariajai išraiškai sudaryti ir bandoma suderinti nurodytą įvestį su ja.
6. modelis () Jis naudojamas norint grąžinti reguliariąją išraišką, iš kurios buvo sudarytas šis modelis.
7. citata (eilutės) Jis naudojamas norint grąžinti nurodytos eilutės pažodinį šabloną String.
8. padalijimas (CharSequence įvestis) Jis naudojamas duotai įvesties sekai padalinti pagal šio modelio atitikmenis.
9. padalijimas (CharSequence įvestis, įvesties riba) Jis naudojamas duotai įvesties sekai padalinti pagal šio modelio atitikmenis. Ribos parametras valdo, kiek kartų modelis taikomas.
10. toString() Jis naudojamas norint grąžinti šio modelio eilutę.

Pavyzdys: Šablonų klasė

Java






// Java Program Demonstrating Working of matches() Method> // Pattern class> // Importing Pattern class from java.util.regex package> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Following line prints 'true' because the whole> >// text 'geeksforgeeks' matches pattern> >// 'geeksforge*ks'> >System.out.println(Pattern.matches(> >'geeksforge*ks'>,>'geeksforgeeks'>));> >// Following line prints 'false' because the whole> >// text 'geeksfor' doesn't match pattern 'g*geeks*'> >System.out.println(> >Pattern.matches(>'g*geeks*'>,>'geeksfor'>));> >}> }>

>

>

Išvestis

true false>

Matcher klasė

Šis objektas naudojamas „Java“ įvesties eilutės suderinimo operacijoms atlikti, taip interpretuojant anksčiau paaiškintus šablonus. Tai taip pat neapibrėžia viešųjų konstruktorių. Tai galima įgyvendinti iškvietus matcher () bet kuriame modelio objekte.

Taip ne. Metodas apibūdinimas
1. rasti () Jis daugiausia naudojamas ieškant kelių reguliarių posakių tekste.
2. rasti (int pradžia) Jis naudojamas ieškant reguliarių posakių atvejų tekste, pradedant nuo nurodytos rodyklės.
3. pradžia () Jis naudojamas norint gauti atitikties pradžios indeksą, kuris randamas naudojant find() metodą.
4. galas() Jis naudojamas norint gauti atitikties, kuri randama naudojant find() metodą, pabaigos indeksą. Jis grąžina simbolio indeksą šalia paskutinio atitinkančio simbolio.
5. groupCount() Jis naudojamas norint rasti bendrą suderintos posekos skaičių.
6. grupė () Jis naudojamas norint rasti suderintą poseką.
7. degtukai() Jis naudojamas norint patikrinti, ar reguliarioji išraiška atitinka šabloną.

Pastaba: T Pattern.matches() patikrina, ar visas tekstas atitinka šabloną, ar ne. Kiti metodai (parodyta toliau) dažniausiai naudojami ieškant daugybinių raštų tekste.

Aptarkime keletą pavyzdinių programų, kaip tai darėme modelio klasėje. Čia aptarsime keletą Java programų, kurios demonstruoja kompiliavimo (), find (), start (), end () ir split () veikimą, kad geriau suprastume Matcher klasę.

1 pavyzdys: Šablonų paieška

Java




// Java program to demonstrate working of> // String matching in Java> // Importing Matcher and Pattern class> import> java.util.regex.Matcher;> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Create a pattern to be searched> >// Custom pattern> >Pattern pattern = Pattern.compile(>'geeks'>);> >// Search above pattern in 'techcodeview.com>

apibūdinimas

[xyz]

x, y arba z

[^xyz]

poeilutės pavyzdys java
Bet kokie simboliai, išskyrus x, y arba z

[a-zA-Z]

simboliai nuo a iki z arba nuo A iki Z.

[a-f[m-t]]

A iki f ir m iki t sąjunga.

[a-z && p-y]

Visas elementų diapazonas susikerta tarp dviejų diapazonų

[a-z && [^bc]]

jungtis nuo a iki z, išskyrus b ir c

[a-z && [^m-p]]

a iki z jungtis su išskyrus diapazoną nuo m iki p

Žemiau pateikiamas aukščiau pateiktos temos įgyvendinimas:

Java




// Java Program to check on Regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checks if the string matches with the regex> >// Should be single character a to z> >System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));> >// Check if the element is range a to z or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]'>,>'Gfg'>));> >}> }>

>

>

Išvestis

true false>

Regex metasimboliai

Regex

apibūdinimas

X?

X pasirodo vieną kartą arba ne

X+

X pasirodo vieną ar daugiau nei vieną kartą

X*

X pasirodo nulis arba ne vieną kartą

X{n}

X pasirodo n kartų

X{n,}

X pasirodo n kartų arba daugiau nei n

X{n,m}

X atrodo didesnis nei lygus n kartų ir mažesnis nei m kartų.

Toliau pateikiamas Regex metacharakterių įgyvendinimas:

Java




// Java Program to check on regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checking all the strings using regex> >System.out.println(Pattern.matches(>'[b-z]?'>,>'a'>));> >// Check if all the elements are in range a to z> >// or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]+'>,>'GfgTestCase'>));> >// Check if elements is not in range a to z> >System.out.println(Pattern.matches(>'[^a-z]?'>,>'g'>));> >// Check if all the elements are either g,e,k or s> >System.out.println(> >Pattern.matches(>'[geks]*'>,>'geeksgeeks'>));> >}> }>

>

>

Išvestis

false true false true>

Java Regex ieškiklio pavyzdys

Regex

apibūdinimas

.

Bet koks personažas

d

Bet kokie skaitmenys, [0-9]

D

Bet koks neskaitmuo, [^0-9]

s

Tarpo simbolis, [ x0Bf ]

S

Ne tarpo simbolis, [^s]

In

Žodžio simbolis, [a-zA-Z_0-9]

IN

Nežodinis simbolis, [^w]



Žodžių riba

B

Ne žodžių riba

Žemiau pateikiamas „Java Regex Finder“ diegimas:

Java




// Java Program to implement regex> import> java.io.*;> import> java.util.regex.*;> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Check if all elements are numbers> >System.out.println(Pattern.matches(>'d+'>,>'1234'>));> >// Check if all elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'1234'>));> >// Check if all the elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));> >// Check if all the elements are non-spaces> >System.out.println(Pattern.matches(>'S+'>,>'gfg'>));> >}> }>

>

>

Išvestis

true false true true>

Išvada

Galiausiai aptarkime kai kurias svarbias pastabas, gautas iš aukščiau esančio straipsnio

  1. Modelio objektą sukuriame iškviesdami Pattern.compile(), konstruktoriaus nėra. compile () yra statinis metodas Pattern klasėje.
  2. Kaip ir aukščiau, mes sukuriame Matcher objektą naudodami matcher () klasės Pattern objektuose.
  3. Pattern.matches() taip pat yra statinis metodas, naudojamas patikrinti, ar visas tekstas atitinka šabloną, ar ne.
  4. find() naudojamas norint rasti kelis šablonų atvejus tekste.
  5. Mes galime padalinti tekstą pagal skiriamąjį šabloną naudodami split() metodą

DUK „Java Regex“.

Q1. Kas yra reguliariosios „Java“ išraiškos?

Metai:

„Java“ įprastos išraiškos naudojamos eilučių šablonams, kuriuos galima naudoti ieškant, manipuliuojant ir redaguojant „Java“ eilutę.

Q2. Koks yra paprastas „Java“ reguliariosios išraiškos pavyzdys?

Metai:

Žemiau paminėtas paprastas įprastos reiškinio „Java“ pavyzdys:

Java




// Java Program to check on Regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checks if the string matches with the regex> >// Should be single character a to z> >System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));> >// Check if all the elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));> >// Check if all the elements are non-spaces> >System.out.println(Pattern.matches(>'S+'>,>'gfg'>));> >}> }>

>

>

Išvestis

true true true>