Darbs ar regulārajām izteiksmēm Java

Satura rādītājs
Mūsdienu informācijas sistēmās ir normāli redzēt meklēšanas funkcijas, šīs funkcijas katru reizi ir jāapstrādā modeļi no daudziem citiem kompleksiem. Lai varētu izskatīt katru gadījumu īpaši, tas prasītu dažus tūkstošus gadu, tāpēc ir izstrādāti mehānismi, kas ļauj izveidot formulētu meklēšanas attēlojumu.
Šīs formulas var atrast regulāras izteiksmes, kas ļauj mums izveidot modeļus teksta virkņu novērtēšanai un atgriezt pozitīvu vai negatīvu vērtību, ja minētā virkne atbilst vai neatbilst izteiktajai formulai.
In Java Mēs varam ieviest regulārās izteiksmes vienkāršā veidā, taču tas prasa izstrādātājam diezgan plašu pētījumu, lai viņš varētu apgūt dažādus tā elementus.
Veidu, kādā mēs varam izteikt formulas, ar kurām mēs varam pārbaudīt savus modeļus ar īpašu koda konstrukciju, mēs to sauksim par regulārās izteiksmes sintakse.
Ko mums ļauj sintakse?Sintakse ļauj mums izveidot modeļus pēc veida rakstzīme, daudzums, rakstzīmju un daudzumu kombinācija, sāciet ar noteiktu elementu, iestatiet formulas centra izteiksmi un beigas. Ar to mēs varam noteikt ļoti specifiskus modeļus, kas var būt nepieciešami mūsu programmā, vai, iespējams, atbilstošākā veidā filtrēt meklēšanu tekstā vai datu bāzē.
Tālāk apskatīsim nelielu to elementu sarakstu, kurus visbiežāk izmanto regulārajās izteiksmēs ar Java, ir daudz vairāk elementu, nekā parādīts šajā apmācībā, tāpēc, lai nostiprinātu zināšanas, ieteicams veikt savu pētījumu:
Rindas sākums\^ Ar šo elementu mēs turpinām norādīt Java kas sāk rindu regulārajā izteiksmē.
Rindas beigas$ Ar šo simbolu mēs norādām, ka esam pabeiguši rindu.
Rakstzīmju saraksts[] Ar iekavām mēs regulārajai izteiksmei norādām, ka tai ir jāmeklē kāds no sarakstiem.
Izslēgt[\^] Tas ļauj mums izvēlēties jebkuru rakstzīmi, kas nav uzskaitīta.
Kvantifikators{j, k} Atrodiet, kas atrodas j norādīto reižu skaits k; {j,} šajā otrajā gadījumā neatkarīgi no tā, kas atrodas j vienu vai vairākas reizes; beidzot {j} norāda, ka vajadzētu parādīties tam, kas atrodas j tikai vienu reizi.
Vārdu rakstzīmes\ w Atrodiet rakstzīmes, kas pieder vārds, bet, ja mēs izmantojam \ W tas darbojas pretēji, atrod rakstzīmes, kas nepieder.
Cipari\ d Tas ļauj mums izveidot spēles ar tikai cipariem un, ja mēs to izmantojam \ D mēs saskaņosim visu, kas nav cipars vai cipars.
Sagataves\ s Tas ļauj mums saskaņot tukšas vietas, piemēram, cilnes, atstarpes taustiņu, bet, ja mēs to izmantojam \ S darbojas pretēji, tas atbilst visam, kas nav baltā telpa.
Kā mēs redzam, izmantojot šos dažus elementus, mēs varam izveidot dažādas kombinācijas, ar kurām mēs varam iegūt salīdzinoši sarežģītus modeļus.
Ja mēs gribam izmēģināt vienu regulāra frāze Pirms programmas sastādīšanas mēs varam izmantot rubular.com lapu, kur mēs varam novērtēt modeļus reālā laikā.

PALIELINĀT

Mēs veiksim vienkāršu piemēru, kurā pārbaudīsim a regulāra izteiksme e -pasta apstiprināšanai, mēs izmantosim sekojošo:
[_ a-z0-9-] + (\. [_ a-z0-9-] +) * @ [a-z0-9-] + (\. [a-z0-9-] +) * (\. [az] {2,3}) $

Vispirms mums jāievada regulārā izteiksme lapas lapas pirmajā laukā rubular.com tad laukā sauc jūsu testa virkne mēs pārbaudīsim dažādus e -pastus, lai pārbaudītu, vai regulārā izteiksme darbojas. Apskatīsim, kā validators uzvedas, ievadot nederīgu e -pastu:

PALIELINĀT

Kā redzam, mūsu piemēra e -pastā nav norādīts punkts, tāpēc tas ir nederīgs un nav nerada atbilstību Izmantojot regulāro izteiksmi, mēs to labosim, ievietojot trūkstošo punktu, un validators automātiski ģenerē pozitīvu atbildi, ļaujot mums redzēt, ka mūsu regulārā izteiksme darbojas bez problēmām.

PALIELINĀT

Kā redzam, tas ir ļoti noderīgs resurss, kad mēs mācāmies lietot regulārās izteiksmes ne tikai Java ja ne kādā valodā.
Kad mēs zinām, ko dara katrs no sintakses pamatelementiem, tagad mums jāiemācās izveidot a meklēt modeli iekšpusē Java, ar to mēs varam redzēt, kādas metodes, klases un pakotnes sāk darboties, izmantojot regulārās izteiksmes.
Pirmā lieta, kas mums jāzina, ir tas, ka visi šie komunālie pakalpojumi ir iekļauti komplektā java.util.regex, tāpēc, lai izpildītu šos piemērus, šī pakete jāiekļauj mūsu nodarbību sākumā.
Kad iepriekš minētais ir izdarīts, mēs varam pārbaudīt modeli šādā veidā:
 if (ourString.matches (ourExpression)) {// Ja tas atbilst šeit, mēs izpildām kodu} 

Mēs redzam, ka mēs izmantojam šo metodi spēles (), tas novērtēs rakstzīmju virkni pret regulārās izteiksmes modeli un atgriezīsies taisnība vai nepatiesa, ja rakstzīmju virkne atbilst modelim vai nē.
Šāda veida izmantošana ir piemērota nelielās validācijās, tomēr, ja mēs izmantosim atkārtotu validāciju, tas ir, tā mūsu programmā parādīsies daudzas reizes, vislabāk ir izveidot nelielu rutīnu vai klasi, kas ļauj novērtēt virkni parametriskas formas, tas ir, rutīna vai metode, kas ļauj ievadīt virkni un atgriezt patiesu vai nepatiesu, jau salīdzinot ar konkrētu modeli.
Nākamajā programmā mēs pārbaudīsim nelielu modeli, un mēs to novērtēsim, salīdzinot ar pāris virknēm, un programma mums pateiks, kuru tā dara. atbilstība, tas ir, kurš atbilst un kurš neatbilst, apskatīsim kodu un tad redzēsim, kā tas darbojas:
 importēt java.util.regex. *; public class TestPatterns {public static void main (String [] argv) {String pattern = "Q [u] \ d + \."; String [] input = {"QA777. Vai mūsu produkta identifikators.", "Quack, Quack, Quack!" }; Pattern p = Pattern.compile (modelis); for (String in: input) {boolean found = p.matcher (in) .lookingAt (); System.out.println ("" " + modelis +" '" + (atrasts?" Atbilst "": "neatbilst" ") + +" ""); }}} 

Šeit mēs redzam, kā pirmā lieta, ko mēs darām, ir importēt šīs sadaļas sākumā minēto pakotni, lai šādā veidā iegūtu meklēšanas funkcijas ar regulārām izteiksmēm. Tad mēs izveidojam modeli, kuru izmantosim mūsu programmā, šajā gadījumā tas ir modelis, kas atbilst burtam “Q"Tad tai jābūt jebkurai rakstzīmei, izņemot burtu"vai"Un tam jābeidzas ar punktu. Pēc tam mēs apkopojam savu modeli, izmantojot metodi sastādīt un mēs to varam izmantot, lai izveidotu sērkociņus. Visbeidzot, ja modelis atbilst, tas tiek drukāts ar vārdu sakrīt pretējā gadījumā mēs drukājam tas nesakrīt.
Tālāk redzamajā attēlā redzēsim, kā tas izskatās, palaižot programmu:

PALIELINĀT

Pēc tam, kā paskaidrots, mēs atzīmējam pirmo virkni vai ķēdi, ja tā atbilst, bet otrā neatbilst, un turpmākai atsaucei mēs ievietojam modeli, uz kura jāsalīdzina.
Tagad mēs veiksim sarežģītāku piemēru, mēs noskaidrosim, kura mūsu virkņu atbilstību daļa ir ļoti noderīga, veicot teksta meklēšanu, jo ar to mēs varētu izcelt lietotāja ievadītās atbilstības.
Šim nolūkam mēs izmantosim to pašu mūsu iepriekšējās programmas bāzi ar dažām izmaiņām, apskatīsim kodu un pēc tam tā skaidrojumu:
 importēt java.util.regex. *; public class Match {public static void main (String [] argv) {String pattern = "Q [u] \ d + \."; Pattern r = Pattern.compile (modelis); String text = "Id ir: QW990. Testa beigas!"; Matcher m = r.matcher (teksts); ja (m.find ()) {System.out.println (modelis + "atbilst \" " + m.grupa (0) +" \ "iekšā \" " + teksts +" \ ""); } else {System.out.println ("Nav atbilstību"); }}} 

Mēs atkal redzam, kā mēs sākam savu programmu, ieskaitot paketi java.util.regex. *. Tad mēs izmantojam to pašu modeli no iepriekšējās programmas un apkopojam to ar metodi sastādīt, interesanta lieta nāk tagad, mēs esam izmantojuši metodi salīdzinātājs () lai atrastu atbilstību un pēc tam ar metodi atrast () un metode grupa () mēs varam iegūt tieši to, kas atbilst, beidzot mēs izgatavojam atbilstošās sietspiedes. Apskatīsim, kā tagad izskatās mūsu programma:

PALIELINĀT

Tādējādi mēs redzam, kā mēs varējām izolēt vārdu, kas patiešām atbilst modelim, ko esam izveidojuši, lai salīdzinātu regulāra frāze.
Viena no visbiežāk izmantotajām lietojumprogrammām ir veidlapas, kur mēs varam veikt apstiprināšanu e -pasti, tālruņu numuri, kredītkartes, paroles, IP adreses, lietotājvārdi, pasta indeksi un pat apstiprināt, ka visi mūsu HTML dokumenta tagi ir pareizi aizvērti, tādējādi dodot mums iespēju panākt lielāku drošību, apstrādājot lietotāju ievadīto tekstu.
Bet ne tikai apstiprinājumos veidlapas laukos, kā mēs to pamanījām savā pēdējā piemērā ilgi teksta meklējumi Pēc konkrēta modeļa mēs varam sistemātiski meklēt ļoti sarežģītos teksta dokumentos un tādējādi ietaupīt daudz laika, vienkārši uzrakstot nelielu programmu.
Pabeidzot šo apmācību, mēs esam iemācījušies, kā mēs varam no dažādiem elementiem izteikt situācijas mūsu modeļos, lai efektīvi salīdzinātu tekstu vai rakstzīmes, kuras mēs vēlamies novērtēt, pateicoties tam regulāras izteiksmes. Šie novērtējumi ir diezgan ātri, pateicoties valodas optimizācijai tās piedāvātajās metodēs, tāpēc tie ir ļoti piemēroti saskarņu veidošanai, kur mums ir jāmeklē un jāapstiprina lietotāja ievadītais teksts.Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu
wave wave wave wave wave