Regulārā izteiksme: ko tas nozīmē

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.

instagram viewer

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.

Regulārās izteiksmes cipari
Ciparu atrašana ar regex Python.

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.

Regulārās izteiksmes klases
Izmantojot Regex klases, lai atrastu burtus Python.

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.

Regulārās izteiksmes grupas
Regex grupas palīdz atrast vietrāžus URL JavaScript.

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.

Regulārās izteiksmes enkuri
Regex enkuri izmanto pozicionēšanu, lai atrastu atbilstību JavaScript.

Šī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.