„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:
- Šablonų klasė
- atitikmenų klasė
- PatternSyntaxException klasė
- 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
- Modelio objektą sukuriame iškviesdami Pattern.compile(), konstruktoriaus nėra. compile () yra statinis metodas Pattern klasėje.
- Kaip ir aukščiau, mes sukuriame Matcher objektą naudodami matcher () klasės Pattern objektuose.
- Pattern.matches() taip pat yra statinis metodas, naudojamas patikrinti, ar visas tekstas atitinka šabloną, ar ne.
- find() naudojamas norint rasti kelis šablonų atvejus tekste.
- 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švestistrue true true>