Regulārās izteiksmes, plašāk pazīstamas kā Regex, ir viens no spēcīgākajiem un daudzpusīgākajiem resursiem izstrādes, sistēmu administrēšanas un lielu teksta apjomu apstrādes pasaulē. Tomēr daudziem lietotājiem un programmētājiem, kas ar to saskaras pirmo reizi, tā sintakse var būt mīklaina vai pat sarežģīta. Regulāro izteiksmju noteikumu un modeļu apgūšana ļauj meklēt, filtrēt, validēt un pārveidot tekstu ar nepārspējamu efektivitāti un elastību.
Vai esat kādreiz domājuši, kā savos IT projektos varat atrast sarežģītus modeļus dokumentos, validēt veidlapas, pārveidot datus vai automatizēt meklēšanas procesus? Neatkarīgi no tā, vai esat izstrādātājs, sistēmas administrators vai vienkārši zinātkārs lietotājs, šis raksts ir domāts jums. Sagatavojieties pilnīgam, praktiskam un, galvenais, skaidram ceļvedim par regulāro izteiksmju noteikumiem un to pielietojumu visu veidu kontekstos.
Kas ir regulārās izteiksmes jeb regex noteikumi?
Regulārās izteiksmes (Regex, saīsinājums angļu valodā ir Regulāra izteiksme) ir rakstzīmju secības vai modeļi, kas spēj definēt noteikumus tekstu atrašanai, validēšanai vai manipulēšanai citos tekstos. Iedomājieties, ka meklējat konkrētas frāzes, konkrētus formātus (piemēram, e-pasta adreses, datumus, tālruņu numurus), vārdus, kas atbilst noteiktiem kritērijiem, vai arī vēlaties vairumā aizstāt teksta daļas: visos šajos gadījumos Regex ir ideāls rīks.
Pamatideja ir Ar simbolu, burtu un speciālo operatoru palīdzību aprakstiet modeli, kuram jāatbilst tekstam, kuru vēlamies atrast, validēt vai modificēt.Piemēram, ja vēlaties atrast visus skaitļus frāzē, varat definēt vienkāršu modeli, kas saka “jebkura skaitliska rakstzīme” (piemēram, \d). Ja vēlaties kaut ko sarežģītāku, varat izveidot tik sarežģītus noteikumus kā: “visas virknes, kas sākas ar 'Kopija' un beidzas ar skaitli”.
Regex vēsture un evolūcija
Regulārās izteiksmes radās 20. gadsimta vidū formālās loģikas un automātu teorijas jomā. Tā pirmais praktiskais pielietojums bija UNIX balstītās sistēmās ar tādiem utilītprogrammām kā ed, grep, slāpes y awkPēc tam standarts POSIX paplašināja savu sintaksi un iekļāva to daudzās vidēs. Vēlāk valoda Perl pacēla Regex jaunā līmenī, pievienojot jaunas funkcijas un popularizējot tās izstrādātāju kopienā.
Tagadnē, Regulārā izteiksme ir iebūvēta lielākajā daļā programmēšanas valodu (JavaScript, Python, Java, C#, PHP, Ruby u. c.), kā arī uzlaboti teksta redaktori, operētājsistēmas, tīmekļa ietvari un vairākas komandrindas utilītas. Tas padara regulārās izteiksmes noteikumus par patiesi universālu valodu teksta apstrādei jebkurā skaitļošanas kontekstā.
Kam paredzēti regulārās izteiksmes noteikumi?
the Regulārās izteiksmes noteikumi Tos izmanto ne tikai meklēšanai, bet arī validē, iegūst, pārveido un ļauj dažu sekunžu laikā filtrēt vai modificēt lielu datu apjomu.
- Modeļu atrašana lielos tekstos: Atrodiet e-pasta adreses, vietrāžus URL, vārdus, skaitļus, datumus un citus datus — pat milzīgos failos vai datubāzēs — bez manuālas piepūles.
- Lietotāja ievades validēšana: Pirms paroles saglabāšanas pārbauda, vai tā atbilst prasībām, vai tālruņa numurs vai e-pasta adrese ir pareiza.
- Mainīt un aizstāt tekstu: Aizstājiet noteiktas teksta daļas, sākot no HTML tagu noņemšanas līdz datu formātu normalizēšanai.
- Automatizēt procesus: Filtrējiet žurnālus, transformējiet sarakstus, analizējiet žurnālfailus vai pārdēvējiet failus masveidā saskaņā ar ļoti precīziem noteikumiem.
Regulāro izteiksmju pamati: pamatjēdzieni
Regulārās izteiksmes noteikumi sastāv no literāļu rakstzīmju un meta rakstzīmju kombinācijas. Šo elementu izpratne ir pamats noderīgu modeļu veidošanai.
1. Literālās rakstzīmes
Literālis apzīmē tieši to rakstzīmi, kuru vēlaties meklēt. Piemēram, izteiksme Casa atradīs tieši šo secību mērķa tekstā tieši šādā secībā.
2. Metarakstzīmes: regulāro izteiksmju spēks
Metakarakteri ir īpaši simboli, kas paplašina regulāro izteiksmju nozīmi, piešķirot tām daudzpusību un jaudu. Visizplatītākie no tiem ir:
- . Punkts apzīmē jebkuru rakstzīmi, izņemot rindiņas pārtraukumu.
- [] Iekavas nosaka atļauto rakstzīmju klases vai kopas.
- ^ Cirkfikss var apzīmēt vai nu rindas/vārda sākumu, vai, ja tas ir iekavās, kopas noliegumu.
- $ Dolāra simbols norāda rindas vai teksta beigas.
- * Zvaigznīte ļauj meklēt iepriekšējā elementa “nulli vai vairāk atkārtojumus”.
- + Pluszīme meklē “vienu vai vairākus atkārtojumus”.
- ? Norāda, ka iepriekšējais elements ir neobligāts (nulle vai viens).
- () Iekavas grupē izteiksmes daļas, lai lietotu kvantatorus, iegūtu apakšgrupas vai definētu alternatīvas.
- | Vertikālā josla apzīmē loģisku alternatīvu "vai".
- \ Atpakaļvērsta slīpsvītra iziet no nākamās rakstzīmes īpašās nozīmes vai ievieš saīsinātas secības (piemēram, \d, \w, \s).
3. Kvantitatori: atkārtošanās kontrole
Kvantifikatori ļauj noteikt, cik reizes jāatkārto rakstzīme, klase vai grupa:
- *Nulle vai vairāk atkārtojumu.
- +: Vienu vai vairākas reizes.
- ?Vienreiz vai nemaz (pēc izvēles).
- {n}Tieši tā n atkārtojumi.
- {n,}: Vismaz n reizes (nav maksimālās robežas).
- {n,m}: Starp n y m atkārtojumi.
4. Rakstzīmju klases un saīsinājumi
Rakstzīmju klases ļauj mums vēl vairāk sašaurināt meklējamo informāciju:
- [az]: jebkurš mazais burts.
- [AZ]: lielais burts.
- [0-9]: jebkurš cipars.
- [abc]burts a, b vai c.
- [^xyz]: jebkura rakstzīme izņemot x, i z.
- \d: decimālcipars (ekvivalents [0–9]).
- \D: jebkura rakstzīme, kas Nē būt ciparam.
- \w: vārda rakstzīme (burts, cipars vai pasvītrojums; ekvivalents [a-zA-Z0-9_]).
- \W: jebkura rakstzīme, kas nav vārds.
- \s: balta atstarpe (atstarpe, tabulēšanas simbols, rindiņas pārtraukums).
- \S: jebkura rakstzīme, kas nav atstarpe.
5. Enkuri: raksta ievietošana tekstā
Enkuri ļauj ievietot rakstus rindas sākumā vai beigās, vai arī vārdu sākumā/beigās.
- ^: rindas vai teksta sākums.
- $: rindas vai teksta beigas.
- \b: vārda robeža (sākums vai beigas).
- \B: nevārda robežpunkts (iekšējais).
Regulāro izteiksmju noteikumu praktiski piemēri
Tagad aplūkosim, kā šie noteikumi attiecas uz reālās dzīves situācijām, gan vienkāršām, gan sarežģītām, lai jūs varētu ātri pielietot apgūto praksē.
- E-pasta adrešu validēšana: ^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$
- Atrodiet DNI numurus: \b\d{8}[- ]?[trwagmyfpdxbnjzsqvhlcke]?\b
- Noteikt IP v4 adreses: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$
- Izvilkt URL no HTML tagiem:
- Atklāt komentētās rindas Java valodā: //[^\r\n]*[\r\n]
Paplašināta loģika un modeļu pielāgošana
Regulārā izteiksme ļauj veidot sarežģītus modeļus, apvienojot grupas, alternācijas, atsauces un uzlabotus kvantifikatorus, ļaujot filtrēt, validēt vai atrast ļoti specifisku informāciju.
Grupas un asociācijas
Ievietojot daļu no modeļa iekavās, mēs izveidojam grupu. Tas ļauj mums lietot kvantifikatorus veselām grupām, iegūt informāciju vai atsaukties uz apakšmodeļiem.
Piemēram, izteiksme ((ma)+b) atbildīs “mab” vai “mamab”, bet ne “maab”. Uz grupām var atsaukties vēlāk, izmantojot \1, \2utt., ideāli piemēroti līdzīgu atkārtotu modeļu atrašanai.
Alternatīvas (|): loģiskais "vai" regulārajā izteiksmē
Vertikālā josla | ļauj definēt alternatīvas: jebkurš no modeļiem, kas atdalīti ar šo simbolu, būs derīgs. Piemēram, (zēns|meitene) atbildīs abiem vārdiem.
Atsoļa metarakstzīmēm ar \
Atpakaļvērsta slīpsvītra \ Ir ļoti svarīgi neitralizēt metatveidojuma īpašo nozīmi vai ieviest saīsinātas secības. Piemēram, “\.” meklē literālu punktu, “\?” jautājuma zīmi, “\\” pašu atpakaļvērsto slīpsvītru utt.
Mantkārīgi un slinki kvantifikatori
Pēc noklusējuma regulārās izteiksmes kvantifikatori ir mantkārīgi: tie ņem pēc iespējas vairāk teksta. Pievienošana ? Tas tiek mainīts uz “slinks”, kas ietver nepieciešamo minimumu.
Piemēram: suns atradīs garāko virkni starp “perr” un “o”, savukārt suns uztvers minimumu.
Apgalvojumi un apkārtējās ainas
Izvēles “Lookahead” un “lookbehind” apgalvojumi ļauj validēt nosacījumus “pirms” vai “pēc” atbilstības, neizmantojot teksta rakstzīmes.
- Pozitīva nākotne: (?=raksts) Pārbaudiet, vai pēc pašreizējās pozīcijas ir atrasts “raksts”.
- Negatīva nākotnes prognoze: (?! raksts) Pārbaudiet, vai zemāk NAV redzams “raksts”.
- Pozitīvs/negatīvs ieskats pagātnē: (?<=raksts) y (? Viņi dara to pašu "atpakaļgaitā".
Regex praktiskie pielietojumi reālajā pasaulē
Regulārā izteiksme tiek izmantota dažādās jomās un ikdienas uzdevumos:
- Veidlapas apstiprināšanae-pasti, tālruņu numuri, vārdi, spēcīgas paroles.
- Žurnālu apstrāde un sistēmas audits: Žurnālfailos tiek meklētas likumsakarības, iegūtas kļūdas un brīdinājumi.
- SEO un URL pārvaldībaURL pārrakstīšana .htaccess failā, parametru filtri, meklēšanas segmentācija.
- Lielapjoma teksta rediģēšana: Notīriet HTML tagus, noņemiet liekās atstarpes, normalizējiet datus izklājlapās, pielāgojiet mantoto kodu.
- Tīmekļa izstrāde un automatizācija: automatizēta testēšana, servera noteikumu konfigurēšana, skrāpju izstrāde.
Dažādas regulāro izteiksmju garšas un dzinēji
Ne visas regulāro izteiksmju implementācijas atbalsta vienas un tās pašas iespējas; pastāv dažādas "garšas" atkarībā no izmantotās valodas, rīka vai dzinēja.
- POSIX: Primārā sintakse, kuras pamatā ir UNIX. Mazāk plaša nekā Perl vai PCRE.
- Perl/PCRE: Ļoti pilnīgi, tie atbalsta apkārtrakstus, uzlabotas atsauces, modifikatorus un apakšprogrammas.
- JavaScript: Plaši izmantots tīmeklī, saderīgs ar lielāko daļu operatoru, taču ir ierobežojumi meklēšanā aiz muguras (izņemot modernās versijas).
- .NET un citas valodas: Tie parasti ir saderīgi ar PCRE, taču vienmēr ieteicams iepazīties ar valodas dokumentāciju.
Tāpēc, strādājot konkrētā kontekstā, pārbaudiet, kādu atbalstu un sintaksi regulārās izteiksmes (Regex) pieņem šajā rīkā vai valodā.
Kā pārbaudīt un izveidot savus regulārās izteiksmes modeļus
Labākais veids, kā apgūt regulārās izteiksmes, ir praktizēties ar piemēriem un izmantot tīmeklī pieejamos tiešsaistes testēšanas rīkus.
- regex101.com: ļauj rakstīt modeļus, pārbaudīt rezultātus, skatīt skaidrojumus un veiktspējas statistiku.
- regexr.com: : lieliskas soli pa solim sniegtas palīdzības iespējas, vizuāla grafika un interaktīvi piemēri.
- Vizuālie skaidrojumi un koda ģeneratori: ideāli piemērots sarežģītu modeļu izpratnei un izteiksmju ģenerēšanai no nulles.
- Tiešsaistes spēles un prakseMācies spēlējoties un risini reālus izaicinājumus, lai internalizētu regulārās izteiksmes darbību.
Biežāk pieļautās kļūdas un praktiski padomi regulāro izteiksmju apgūšanai
Regulārā izteiksme ir spēcīga, taču tā var būt arī mulsinoša. Šie padomi palīdzēs izvairīties no bieži pieļautām kļūdām:
- Izejiet no metazīmēm kad meklējat tā literālo vērtību. Piemēram, izmantojiet \. attiecībā uz lietu, \* zvaigznītes vietā \? pratināšanai.
- Nelietojiet punktu (.) un aizstājējzīmi .* pārāk bieži. Tie ir ļoti noderīgi, taču tie var dot nevēlamus rezultātus, ja jūs labi nedefinējat savu modeli.
- Pievienojiet enkurzīmes (^, $), ja vēlaties ierobežot rakstu līdz rindas sākumam vai beigām. un izvairieties no daļējām atbilstībām.
- Izmantojiet īpašus kvantifikatorus meklējot precīzus atkārtojumus, nevis paļaujoties tikai uz * vai +.
- Vienmēr mēģiniet minēt gan pozitīvus, gan negatīvus piemērus. Tādā veidā jūs varat noteikt, vai modelis aptver visus nepieciešamos gadījumus, neradot viltus pozitīvus rezultātus.
- Sadaliet un iekarojiet: Ja jums ir ļoti sarežģīts raksts, veidojiet to pa daļām un beigās apvienojiet fragmentus.
- Droši apskatiet špikeru lapas, dokumentāciju un forumus. lai redzētu piemērus un ikdienas trikus.
Regex integrēšana programmēšanas valodās un rīkos
Regulārā izteiksme ir integrēta visu galveno valodu visizplatītākajās funkcijās. Daži piemēri:
- JavaScript: Methods pārbaude(), izpildīt() RegExp objekta un metožu atbilst(), Meklēt(), aizvietot (), sadalīt () no virknes.
- python: Modulis re nodrošina tādas funkcijas kā Meklēt(), atbilst(), atrast visu (), apakšnodaļa(), Uc
- PHP: funciones grūtnieces_match(), preg_replace(), grūtnieces_split() un citi
- .TĪKLS: Klase Regulārā izteiksme ar uzlabotām metodēm un PCRE atbalstu.
Redaktoros, piemēram, VSCode, Sublime, Atom vai Notepad++, varat arī izmantot regulāro izteiksmi meklēšanai un aizstāšanai. Un UNIX sistēmās tādas utilītas kā grep, slāpes y awk iekļaut savu regulāro izteiksmju dzinēju.
Regulārās izteiksmes SEO un URL pārvaldībā
Regulārā izteiksme ir galvenā sastāvdaļa URL optimizācijai, tīmekļa maršrutēšanai un dinamisko parametru pārvaldībai tādās platformās kā WordPress, Joomla un e-komercija.
- .htaccess un mod_rewrite: Tie ļauj pārveidot neglītus, ar parametriem piepildītus URL draudzīgās adresēs, izmantojot regulārās izteiksmes noteikumus. Tādā veidā,
www.ejemplo.com/index.php?p=123
var pārveidot parwww.ejemplo.com/articulo/titulo-amigable
, kas uzlabo gan SEO, gan lietotāja pieredzi. - Parametru filtrēšana: Izvilkt, iztīrīt vai pārveidot URL parametrus, lai pielāgotu rezultātus dažādiem meklēšanas kontekstiem.
Izmantojot regulārās izteiksmes noteikumus, tīmekļa pārziņi var izveidot pārrakstīšanas modeļus, kas identificē un modificē URL komponentus, lai uzlabotu struktūru, optimizāciju un izpratni meklētājprogrammām un lietotājiem.
Paplašinātas regulārās izteiksmes: metodes un resursi
Regulārā izteiksme ne tikai nodrošina tiešu meklēšanu; tā atbalsta nosacītu grupēšanu, apakšprogrammas, rekursiju, atpakaļejošas atsauces un daudz ko citu. Tas padara to par būtisku rīku sarežģītu uzdevumu veikšanai.
- Apakšprogrammas un atsauces: Tie ļauj atrast atkārtotus modeļus, simetrijas, secības un ļoti specifiskas validācijas.
- Nosacījumi: Veiciet dažādas meklēšanas vai validācijas, pamatojoties uz iepriekšējās grupās iegūto informāciju.
- Rekursija: Daži uzlaboti dzinēji ļauj definēt modeļus, kas attiecas uz sevi, kas ir ļoti noderīgi, apstrādājot strukturētus datus, piemēram, XML vai JSON.
- Globālie modifikatori: (/g, /i, /m Perl/JavaScript valodās) ļauj veikt globālu, reģistrnejutīgu vai vairāku rindu meklēšanu.
Svarīgi resursi regulāro izteiksmju apguvei
Ja vēlaties paplašināt savas zināšanas, šie resursi būs noderīgi:
- Wikipedia: Detalizēti teorētiski un tehniski skaidrojumi.
- Regular-Expressions.info: Atsauces un pamācības visiem līmeņiem.
- Špikeri: Īsi kopsavilkumi par visiem visbiežāk izmantotajiem operatoriem, grupām un noteikumiem.
- Interaktīvas apmācības: Tieša prakse ar vingrinājumiem un tūlītēju atgriezenisko saiti.
- Kopienas un forumi: Mācieties no citiem lietotājiem, uzdodiet jautājumus un dalieties ar saviem personīgajiem padomiem.
Regulāro izteiksmju apguve sniedz lielas priekšrocības teksta pārvaldībā un apstrādē, ļaujot veikt efektīvāku meklēšanu, validāciju, transformācijas un automatizāciju. Ar konsekvenci un praksi regulāro izteiksmju modeļu rakstīšana kļūst vienkāršāka un dabiskāka. Izmantojiet tiešsaistes rīkus un praktiskos vingrinājumus, sāciet ar vienkāršiem piemēriem un pārejiet pie sarežģītākiem modeļiem. Kad būsiet apguvis tā principus, regulārā izteiksme kļūs par dabisku papildinājumu jūsu izstrādes un sistēmu administrēšanas arsenālā, atvieglojot uzdevumus, kas iepriekš varēja šķist sarežģīti vai garlaicīgi.