Regulaaravaldised, üldtuntud kui Regex, on üks võimsamaid ja mitmekülgsemaid ressursse arenduse, süsteemiadministreerimise ja suurte tekstimahtude töötlemise maailmas. Paljude kasutajate ja programmeerijate jaoks, kes sellega esimest korda kokku puutuvad, võib selle süntaks olla mõistatuslik või isegi üle jõu käiv. Regulaaravaldiste reeglite ja mustrite valdamine võimaldab teksti otsida, filtreerida, valideerida ja teisendada enneolematu efektiivsuse ja paindlikkusega.
Kas olete kunagi mõelnud, kuidas leida dokumentidest keerulisi mustreid, valideerida vorme, teisendada andmeid või automatiseerida otsinguprotsesse oma IT-projektides? Olenemata sellest, kas oled arendaja, süsteemiadministraator või lihtsalt uudishimulik kasutaja, on see artikkel just sulle. Valmistu täielikuks, praktiliseks ja ennekõike selgeks juhendiks regulaaravaldiste reeglite ja nende rakendamise kohta igasugustes kontekstides.
Mis on regulaaravaldised ehk regulaaravaldised?
Regulaaravaldised (inglise keeles lühend Regex) Regular Expression) on märkide jadad või mustrid, mis on võimelised määratlema reegleid tekstide leidmiseks, valideerimiseks või manipuleerimiseks teistes tekstides. Kujutage ette, et otsite konkreetseid fraase, konkreetseid vorminguid (nt e-posti aadresse, kuupäevi, telefoninumbreid), nimesid, mis vastavad teatud kriteeriumidele, või soovite teksti osi hulgi asendada: kõigil neil juhtudel Regex on ideaalne tööriist.
Põhiidee on Kirjeldage sümbolite, tähtede ja erioperaatorite abil mustrit, millele tekst, mida me leidame, valideerime või muudame, peab vastama.Näiteks kui soovite leida kõik numbrid fraasis, saate määratleda lihtsa mustri, mis ütleb „mis tahes numbrimärk” (näiteks \d). Kui soovite midagi keerukamat, saate luua nii keerulisi reegleid nagu: „kõik stringid, mis algavad sõnaga „Koopia” ja lõpevad numbriga”.

Regexi ajalugu ja areng
Regulaaravaldised sündisid 20. sajandi keskel formaalse loogika ja automaatide teooria valdkonnas. Selle esimene praktiline kasutus oli UNIX-põhistes süsteemides, kus kasutati selliseid utiliite nagu ed, grep, janu y awkSeejärel standard POSIX laiendas oma süntaksit ja integreeris selle paljudesse keskkondadesse. Hiljem keel Perl viis Regexi uuele tasemele, lisades uusi funktsioone ja populariseerides neid arendajate kogukonnas.
Olevikus, Regex on sisse ehitatud enamikesse programmeerimiskeeltesse (JavaScript, Python, Java, C#, PHP, Ruby jne), aga ka täiustatud tekstiredaktorid, operatsioonisüsteemid, veebiraamistikud ja mitmed käsurea utiliidid. See teeb regulaaravaldiste reeglitest tõeliselt universaalse keele teksti töötlemiseks mis tahes arvutikeskkonnas.
Milleks on regulaaravaldiste reeglid?
Registerlausereeglid ei ole mõeldud ainult otsimiseks; need valideerivad, ekstraheerivad, teisendavad ja filtreerivad või muudavad sekunditega ka suuri andmemahtusid.
- Mustrite leidmine suurtes tekstides: Leidke e-kirju, URL-e, nimesid, numbreid, kuupäevi ja muud – isegi suurtest failidest või andmebaasidest – ilma käsitsi pingutuseta.
- Kasutaja sisendi valideerimine: Enne parooli salvestamist kontrollib, kas see vastab nõuetele või kas telefoninumber või e-posti aadress on õige.
- Teksti muutmine ja asendamine: Asenda teksti teatud osi, alates HTML-siltide eemaldamisest kuni andmevormingute normaliseerimiseni.
- Protsesside automatiseerimine: Filtreeri logisid, teisenda loendeid, analüüsi logifaile või nimeta faile massiliselt ümber vastavalt väga täpsetele reeglitele.
Regulaaravaldiste põhitõed: põhimõisted
Regulaaravaldiste reeglid koosnevad literaalmärkide ja metamärkide kombinatsioonist. Nende elementide mõistmine on kasulike mustrite loomise alus.
1. Literaalsed tähemärgid
Literaalmärk tähistab täpselt seda märki, mida soovite otsida. Näiteks väljend casa leiab sihttekstist täpselt selle järjestuse selles järjekorras.
2. Metategelased: regulaaravaldiste jõud
Metamärgid on spetsiaalsed sümbolid, mis laiendavad regulaaravaldiste tähendust, andes neile mitmekülgsuse ja võimsuse. Kõige levinumad on järgmised:
- . Punkt tähistab mis tahes märki, välja arvatud reavahetus.
- [] Sulud määratlevad lubatud märkide klassid või komplektid.
- ^ Ümbermärk võib tähistada kas rea/sõna algust või, kui see on nurksulgudes, hulga eitust.
- $ Dollari sümbol tähistab rea või teksti lõppu.
- * Tärn võimaldab otsida eelmise elemendi „null või enam kordust”.
- + Plussmärk otsib „üks või mitu kordust”.
- ? Näitab, et eelmine element on valikuline (null või üks kord).
- () Sulud rühmitavad avaldise osi kvantorite rakendamiseks, alamrühmade eraldamiseks või alternatiivide määratlemiseks.
- | Vertikaalne kriips tähistab loogilist alternatiivi "või".
- \ Tagasikriips lisab järgneva märgi eritähenduse või tutvustab lühendatud järjestusi (näiteks \d, \w, \s).
3. Kvantifikaatorid: korduse kontrollimine
Kvantifikaatorite abil saate määrata, mitu korda märki, klassi või rühma tuleks korrata:
- *Null või rohkem kordusi.
- +: Üks või mitu korda.
- ?: Üks kord või üldse mitte (valikuline).
- {mitte}Täpselt n kordused.
- {mitte,}: Vähemalt n korda (maksimaalset väärtust pole).
- {n,m}: vahel n y m kordused.
4. Märgiklassid ja lühendid
Märgiklassid võimaldavad meil otsingut veelgi kitsendada:
- [az]: suvaline väiketäht.
- [AZ]: suurtäht.
- [0-9]: suvaline number.
- [ABC]: täht a, b või c.
- [^xyz]: suvaline märk välja arvatud x, i z.
- \d: kümnendmurd (võrdub numbriga [0–9]).
- \D: mis tahes märk, mis ei olema number.
- \w: sõnamärk (täht, number või alakriips; samaväärne [a-zA-Z0-9_]).
- \W: mis tahes mittesõnaline märk.
- \s: tühik (tühik, tabulaator, reavahetus).
- \S: mis tahes märk peale tühiku.
5. Ankrud: mustri paigutamine teksti sisse
Ankrud võimaldavad paigutada mustreid rea algusesse või lõppu või sõnade algusesse/lõppu.
- ^: rea või teksti algus.
- $: rea või teksti lõpp.
- \b: sõna piir (algus või lõpp).
- \B: mittesõnaline piiripunkt (sisemine).
Regexi reeglite praktilised näited
Vaatame nüüd, kuidas need reeglid kehtivad nii lihtsates kui ka keerukates reaalsetes olukordades, et saaksite õpitut kiiresti praktikas rakendada.
- E-posti aadresside valideerimine: ^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$
- DNI numbrite leidmine: \b\d{8}[- ]?[trwagmyfpdxbnjzsqvhlcke]?\b
- IP v4 aadresside tuvastamine: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$
- URL-ide ekstraheerimine HTML-märgenditest:
- Tuvasta Java-s kommenteeritud read: //[^\r\n]*[\r\n]
Täiustatud loogika ja mustrite kohandamine
Regulaaravaldised võimaldavad teil luua keerukaid mustreid, kombineerides rühmi, alternatsioone, viiteid ja täiustatud kvantifikaatoreid, mis võimaldab teil filtreerida, valideerida või leida väga spetsiifilist teavet.
Rühmad ja ühendused
Mustri osa sulgudesse pannes loome rühma. See võimaldab meil rakendada kvantoreid tervetele rühmadele, eraldada teavet või viidata alammustritele.
Näiteks avaldis ((ma)+b) leiab vaste „mab” või „mamab”, aga mitte „maab”. Gruppidele saab hiljem viidata, kasutades \1, \2jne, ideaalne sarnaste korduvate mustrite leidmiseks.
Alternatiivid (|): loogiline "või" regulaaravaldises
Vertikaalne riba | võimaldab teil määratleda alternatiive: kõik selle sümboliga eraldatud mustrid on kehtivad. Näiteks (poiss|tüdruk) leiab mõlemad sõnad.
Escape metamärkide jaoks klahvi \
Tagasilõige \ On ülioluline neutraliseerida metategelase eriline tähendus või tutvustada lühendatud järjestusi. Näiteks otsib „\.” punkti, „\?” küsimärki, „\\” kaldkriipsu ennast jne.
Ahned ja laisad kvantifikaatorid
Vaikimisi on regulaaravaldiste kvantifikaatorid ahned: nad võtavad nii palju teksti kui võimalik. ? See muudetakse sõnaks „laisk“, mis hõlmab vajalikku miinimumi.
Näiteks: koer leiab pikima stringi „perr“ ja „o“ vahel, samas kui koer püüab kinni miinimumi.
Väited ja ümbervaated
Ettevaatus- ja tagavaatusväited võimaldavad teil valideerida tingimusi "enne" või "pärast" vastet ilma tekstist märke tarbimata.
- Positiivne tulevik: (?=muster) Kontrollige, kas praeguse asukoha järel leitakse „muster”.
- Negatiivne ettevaade: (?! muster) Kontrollige, et allpool EI OLEKS mustrit.
- Positiivne/negatiivne tagasivaade: (?<=muster) y (? Nad teevad sama asja "tagurpidi".
Regexi praktilised rakendused reaalses maailmas
Regexi kasutatakse väga erinevates valdkondades ja igapäevastes ülesannetes:
- Vormi kinnitamine: e-posti aadressid, telefoninumbrid, nimed, tugevad paroolid.
- Logide töötlemine ja süsteemi auditeerimineMustrite otsimine logifailidest, vigade ja hoiatuste väljavõtmine.
- SEO ja URL-ide haldamineURL-i ümberkirjutamine .htaccess-failis, parameetrifiltrid, otsingu segmenteerimine.
- Massilise teksti redigeerimine: Puhastage HTML-sildid, eemaldage üleliigsed tühikud, normaliseerige arvutustabelites andmeid, kohandage pärandkoodi.
- Veebiarendus ja automatiseerimine: automatiseeritud testimine, serverireeglite konfigureerimine, skreeperi arendus.
Erinevad regulaaravaldiste maitsed ja mootorid
Mitte kõik regulaaravaldiste implementatsioonid ei toeta samu võimalusi; olenevalt kasutatavast keelest, tööriistast või mootorist on erinevaid "variante".
- POSIX: UNIX-il põhinev ürgne süntaks. Vähem ulatuslik kui Perl või PCRE.
- Perl/PCRE: Väga täielikud, toetavad nad ringivaateid, täiustatud viiteid, modifikaatoreid ja alamprogramme.
- javascript: Laialdaselt veebis kasutatav, ühildub enamiku operaatoritega, kuid tagavaates on piiranguid (välja arvatud tänapäevased versioonid).
- .NET ja muud keeled: Tavaliselt on need PCRE-ga ühilduvad, kuid alati on soovitatav tutvuda keele enda dokumentatsiooniga.
Seega, kui kavatsete töötada konkreetses kontekstis, kontrollige alati, millist tuge ja süntaksit regulaaravaldised selles tööriistas või keeles aktsepteerivad.
Kuidas testida ja luua oma regulaaravaldiste mustreid
Parim viis regulaaravaldiste õppimiseks on harjutada näidetega ja kasutada veebis saadaolevaid reaalajas testimise tööriistu.
- regex101.com: võimaldab teil kirjutada mustreid, kontrollida tulemusi, vaadata selgitusi ja tulemuslikkuse statistikat.
- regexr.com: : suurepärased samm-sammult abivalikud, visuaalne graafika ja interaktiivsed näited.
- Visuaalsed selgitajad ja koodigeneraatorid: ideaalne keerukate mustrite mõistmiseks ja avaldiste nullist genereerimiseks.
- Veebimängud ja harjutusedÕpi mängides ja lahenda päris väljakutseid, et mõista, kuidas regulaaravaldised toimivad.
Levinud vead ja praktilised näpunäited regulaaravaldiste valdamiseks
Regulaaravaldised on võimas, aga võivad tekitada ka segadust. Need näpunäited aitavad teil vältida levinud lõkse:
- Escape-metategelased kui otsite selle sõnasõnalist väärtust. Näiteks kasutage \. asja mõttes \* tärni jaoks \? ülekuulamiseks.
- Ärge kasutage punkti (.) ja metamärki .* liiga palju. Need on väga kasulikud, kuid võivad anda soovimatuid tulemusi, kui te oma mustrit hästi ei defineeri.
- Lisage ankrud (^, $), kui soovite mustri piirata rea alguse või lõpuga. ja väldi osalisi vasteid.
- Kasutage spetsiifilisi kvantoreid täpsete korduste otsimisel, selle asemel, et loota ainult * või + sümbolile.
- Proovi alati tuua nii positiivseid kui ka negatiivseid näiteid. Nii saate tuvastada, kas muster hõlmab kõiki vajalikke juhtumeid ilma valepositiivseid tulemusi andmata.
- Jaga ja valluta: Kui teil on väga keeruline muster, ehitage see osadeks ja ühendage fragmendid lõpus.
- Vaadake julgelt spikreid, dokumentatsiooni ja foorumeid. et näha näiteid ja igapäevaseid nippe.
Regexi integreerimine programmeerimiskeeltesse ja tööriistadesse
Regulaaravaldised on integreeritud kõigi suuremate programmeerimiskeelte kõige levinumatesse funktsioonidesse. Mõned näited:
- javascript: Meetodid test (), exec() RegExp objekti ja meetodite vaste(), otsing(), asenda (), jagama () stringist.
- python: mooduli re pakub selliseid funktsioone nagu otsing(), vaste(), leia kõik(), alam()Jne
- PHP: funciones rase_match(), rase_asenda(), rasedusjaotus() ja teised
- .NET: Klaas Regulaarne täiustatud meetodite ja PCRE toega.
Sellistes toimetajates nagu VSCode, Sublime, Atom või Notepad++, saate otsida ja asendada ka regulaaravaldisi. Ja UNIX-süsteemides on utiliidid nagu grep, janu y awk integreerida oma regulaaravaldiste mootor.
Regulaaravaldised SEO-s ja URL-ide haldamises
Regex on URL-i optimeerimise, veebi marsruutimise ja dünaamilise parameetrite haldamise põhikomponent platvormidel nagu WordPress, Joomla ja e-kaubandus.
- .htaccess ja mod_rewrite: Need võimaldavad teil muuta inetud, parameetritega täidetud URL-id regulaaravaldiste reeglite abil sõbralikeks aadressideks. Sel viisil
www.ejemplo.com/index.php?p=123saab ümber kujundadawww.ejemplo.com/articulo/titulo-amigable, mis parandab nii SEO-d kui ka kasutajakogemust. - Parameetrite filtreerimine: URL-i parameetrite ekstraheerimine, puhastamine või teisendamine, et tulemusi erinevate otsingukontekstidega kohandada.
Regexi reeglite abil saavad veebimeistrid luua ümberkirjutusmustreid, mis tuvastavad ja muudavad URL-i komponente, et parandada struktuuri, optimeerimist ning otsingumootorite ja kasutajate arusaamist.
Täiustatud regulaaravaldised: tehnikad ja ressursid
Regulaaravaldised ei võimalda ainult otseotsinguid; see toetab tingimuslikku rühmitamist, alamprogramme, rekursiooni, tagasiviiteid ja palju muud. See teeb sellest olulise tööriista keerukate ülesannete jaoks.
- Alamprogrammid ja tagasiviited: Need võimaldavad teil leida korduvaid mustreid, sümmeetriaid, järjestusi ja väga spetsiifilisi kinnitusi.
- Tingimused: Käivita erinevaid otsinguid või valideerimisi, lähtudes eelmistes gruppides jäädvustatust.
- Rekursioon: Mõned täiustatud mootorid võimaldavad teil määratleda mustreid, mis kehtivad neile endi kohta, mis on väga kasulik struktureeritud andmete, näiteks XML-i või JSON-i töötlemisel.
- Globaalsed modifikaatorid: (/g, /i, /m Perlis/JavaScriptis) võimaldavad globaalseid, tõstu- ja väiketähti mittetundevaid või mitmerealisi otsinguid.
Olulised ressursid regulaaravaldiste õppimiseks
Kui soovid oma teadmisi laiendada, on need ressursid kasulikud:
- Wikipedia: Põhjalikud teoreetilised ja tehnilised selgitused.
- Regulaaravaldised.info: Viited ja õpetused igale tasemele.
- Spikrid: Kiired kokkuvõtted kõigist levinumatest operaatoritest, gruppidest ja reeglitest.
- Interaktiivsed õpetused: Otsene harjutamine harjutuste ja kohese tagasisidega.
- Kommuunid ja foorumid: Õpi teistelt kasutajatelt, esita küsimusi ja jaga oma isiklikke näpunäiteid.
Regulaaravaldiste õppimine pakub tekstihalduses ja -töötluses suurt eelist, võimaldades tõhusamaid otsinguid, valideerimisi, teisendusi ja automatiseerimist. Järjepidevuse ja harjutamisega muutub regulaaravaldiste mustrite kirjutamine lihtsamaks ja loomulikumaks. Kasutage ära veebitööriistu ja praktilisi harjutusi, alustage lihtsate näidetega ja liikuge edasi keerukamate mustrite juurde. Kui olete selle põhimõtted omandanud, saab regulaaravaldisest loomulik lisa teie arendus- ja süsteemiadministreerimise arsenali, hõlbustades ülesandeid, mis varem võisid tunduda keerulised või tüütud.