Kas ir regulārā izteiksme?
Regex vai regulāras izteiksmes, ir modelis, kas atbilst marķējumam programmētāji izmantojiet, lai meklētu noteiktus modeļus tekstā. Regulāras izteiksmes var meklēt gandrīz visu, atkarībā no tā, kā jūs tās strukturējat; tos visā lieto programmētāji, jo tie ir nenovērtējami, lai palīdzētu datoriem ātri kārtot datus un filtrēt nejēdzības, kas citādi varētu izraisīt kļūdas.
Regulāri izteicieni mēdz izskatīties biedējoši, īpaši tiem, kas nav programmētāji. Paskatieties uz šo:
[a-zA-Z0-9 _. + -] + @ [a-zA-Z0-9 _-] + \. [a-zA-Z0-9 _.-] +
Reāli tas patiesībā nemaz nav tik slikti; tas atbilst e-pasta adresēm. Kā jūs redzēsiet, izteicienus var sadalīt atsevišķās rakstzīmēs, kas visas norāda programmai, ko meklēt.
Regulārās izteiksmes ir gandrīz universālas. Tas pats ģenerālis sintakse attiecas uz visām valodām ar nelielām variācijām šeit un tur. Šajā rokasgrāmatā ir gan Python, gan JavaScript piemēri, kā arī vienkāršs vecais regex. Ja strādājat ar citu valodu, neuztraucieties. Gandrīz viss attiecas arī uz jūsu izvēlēto valodu.
Regex pamati
Tehniski nav daudz lietu, kuras nevarētu uzskatīt par regulārām izteiksmēm, jo burtiskās teksta virknes ir patiešām vienkāršas. Ja jūs izmantotu 'abcde' kā regulāru izteiksmi, programmēšanas valoda meklētu tieši šo virkni.
Pirmais dinamiskākais atbilstošais raksturs, uz kuru jāaplūko, ir “.” raksturs. Šajā kontekstā punktu raksturs ir aizstājējzīme. Ja meklējat ar to, programma atgriezīs jebkuru rakstzīmi, kuru tā atradīs kā atbilstošu.
Tātad, ko darīt, ja vēlaties meklēt burtisku punktu? Arī tas nav grūti. Ja vēlaties izmantot burtisku periodu, pirms tā pievienojiet slīpsvītru, piemēram: '\.'
Backslash rakstzīmes
Backslash šeit spēlē daudz vairāk lomu. Lielākajā daļā galveno regex rakstzīmju ir slīpsvītra.

Apskatiet dažus piemērus:
- \ d: cipari no 0 līdz 9
- \ w: "Vārda rakstzīmes" burti, cipari un pasvītrojums
- \ s: atstarpes rakstzīmes, ieskaitot cilnes, jaunas rindas un parastās atstarpes
Ja jūs izmantojat lielo burtu, izmantojot kādu no šiem, jūs saņemsiet pretējo. Piemēram, '\ D' sniedz visu, izņemot ciparus.
Klases
The slīpsvītras rakstzīmes ir labi, bet tie joprojām ir diezgan stingri. Parasti jūs vēlaties saskaņot burtus, ciparus vai dažas īpašās rakstzīmes.

Ievietojiet rakstzīmes, kuras vēlaties saskaņot, kvadrātiekavu pārī "[]", un jūsu programma sakritīs ar jebkuru no tām. To sauc par regex klasi.
[abcd1234]
Iepriekš minētais piemērs joprojām ir neefektīvs. Tā vietā jūs varat izmantot domuzīmi, lai norādītu diapazonu; piemēram, visi mazie burti:
[a-z]
Jūs varat arī uzskaitīt diapazonus. Šī izteiksme atbilst visiem burtiem un cipariem:
[a-zA-Z0-9]
Ja jūs plānojat iekļaut domuzīmi savās rakstzīmju kopās, beigās pielīmējiet to, lai novērstu tās novērtēšanu. Tas darbojas arī ar citām īpašajām rakstzīmēm.
[a-zA-Z0-9 _. + -]
Tāpat kā ar slīpsvītras rakstzīmēm, arī šeit varat iegūt apgriezto rezultātu. Nodarbības sākumā ievietojiet “^”, lai izslēgtu tos no rezultātiem. Rezultātos tiks izslēgti cipari un vairākas īpašās rakstzīmes:
[^0-9_+.-]
Grupas
Grupas izmanto iekavu kopu, lai sadalītu jūsu izteicienu. Viņi grupē datus, ļaujot jūsu programmai tos atlasīt un izmantot. Kad programma noņem “ http://' no tīmekļa adreses tas tiek izmantots regex grupām, lai to paveiktu. Regex ļauj tam mērķēt uz noteiktiem kritērijiem, un grupas ļauj tai nodalīt atsevišķas sadaļas.

Grupas arī ļauj jums izvēlēties vienu vai otru modeli. Viņi nodarbina vienu "|" rīkoties kā "vai" izteiksmē. Tālāk minētā izteiksme sakritīs ar jebkuru no šiem: .com, .org, .net, .edu vai .gov.
\. (com | org | net | edu | gov)
Kvantifikatori
Kvantifikatori ir tieši tādi, kādi tie izklausās. Viņi izsaka izteiciena meklējamā rakstura daudzumu. Šie ir pieejamie kvantatori:
- *: Nulle vai vairāk
- +: Viens vai vairāki
- ?: Nulle vai viena
- {3}: iekavās norādītā summa
Novietojiet jebkuru no šiem kvantitatoriem tā rakstzīmes vai klases beigās, kuras daudzumu vēlaties norādīt. Šajā piemērā tiek meklēti standarta septiņciparu tālruņu numuri:
\ d {3} [. * -] \ d {3} [. * -] \ d {4}
Enkuri un robežas
Regulārās izteiksmes ļauj meklēt modeļus, pamatojoties uz to pozīciju teksta virknē vai ap vārdu.

Šīs ir jūsu galvenās iespējas:
- ^: Virknes sākums
- $: Virknes beigas
- \ b: vārda robeža (vārda sākums vai beigas)
Ja vēlaties atrast tikai virknes, kas sākas ar burtu, varat izmēģināt:
^ [a-zA-Z]
Sakiet, ka vēlaties atrast tikai vārdu "tas", nevis vārdus, kas satur burtus I un T; tur jūs izmantojat vārdu robežas.
\ b (i | I) t \ b
Pēdējās domas
Regulāras izteiksmes var ietaupīt daudz galvassāpju, programmējot. Iedomājieties, kā mēģināt uzrakstīt loģiku, lai izpildītu kādu no šī raksta piemēriem. Tas būtu drausmīgs haoss. Kad jums būs ērti ar viņiem, jūs, iespējams, atradīsit sev patiku izbaudīt regex spēku un elastību.