Python/Kambantsoratra manara-pitsipika

Ny Kambantsoratra Manara-pitsipika (Regex)

hanova

Ny kambantsoratra manara-pitsipika, izay antsointsika amin'ny anarana fohy hoe regex (avy amin'ny teny anglisy "REGular EXpression"), dia fomba fohy sy matanjaka ampiasaina amin'ny famakiana sy fanodikodinana ny kambantsoratra iray. Matetika izy no ampiasaina amin'ny tanjona fikarohana, fanoloana, na fanamarinana fa misy lamina manokana ao anaty kambantsoratra iray.

Ohatra mahazatra amin'ny fampiasana regex ny fikarohana laharana antso an-tariby, na adiresy mailaka, ary azo ampiasaina ihany koa amin'ny fanaovana fanamarinana momba ny fomba famenoana formulaire.

Fanombohana sy Fampiasana Regex

hanova

Raha mikasa hampiasa regex amin'ny programa Python ianao, ny zavatra voalohany tsy maintsy atao dia ny mampiditra ny rakitra re izay manome ny fitaovana rehetra ho an'ny regex. Ity manaraka ity ny fomba fanaovana izany:

import re

Ity andalana ity dia tsy maintsy apetraka eny amin'ny fanombohan'ilay script raha hampiasa regex ianao.

Fanodinana Kambantsoratra Amin'ny Regex

hanova

Andeha hodinihintsika ohatra iray amin'ny fomba fikarohana laharana antso an-tariby mampiasa regex. Amin'ity ohatra ity, hampiasa regex isika mba hahafahana mamantatra ny lamina manokana iray ho an'ny laharana antso amin'ny endrika samihafa:

laharana_tel = re.compile('^(0[0-9]{2})[ .-]([0-9]{2})[ .-]([0-9]{3})[ .-]([0-9]{2})$')

Fandikana ilay Regex

hanova
  • ^: Manamarika ny fanombohan'ilay kambantsoratra. Midika izany fa ny regex dia handinika ny teny manomboka amin'ilay kambantsoratra mihitsy.
  • (0[0-9]{2}): Midika hoe soratra mamantarana ny isa "0" manaraka tarehimarika roa hafa (avy amin'ny 0 ka hatramin'ny 9).
  • [ .-]: Midika hoe mety hisy na "espace", na "teboka", na "tsipi-panohizana" ho mpanasaraka ny laharana.
  • $: Manamarika ny fiafaran'ilay kambantsoratra, mba hahazoana antoka fa tonga amin'ny farany ny fampitahana.

Ohatra Fampiasana Regex amin'ny Fikarohana Laharana

hanova

Raha efa natao compilation ilay regex, dia afaka ampiasaintsika toy izao izy:

import re

laharana_tel = re.compile('^(0[0-9]{2})[ .-]([0-9]{2})[ .-]([0-9]{3})[ .-]([0-9]{2})$')
laharana = '033 04 302 32'
tel = laharana_tel.match(laharana)

Ny asa match() dia miezaka mitady tarehy mifanaraka amin'ilay regex ao anatin'ny kambantsoratra napetraka, ary ny vokatra dia mety ho zavatra antsoina hoe match object raha nahita izy, na None raha tsy nisy lamina mifanaraka hita.

Fitrandrahana Ny Zavatra Hita (Match Object)

hanova

Raha nahita ilay regex ny fikarohana nataontsika, dia azontsika atao ny mitrandraka ny valiny azo avy amin'ilay regex, toy ny:

  • group(): Maka ny zavatra tafiditra rehetra ao anaty regex.
  • groups(): Mamoaka ny vondrona rehetra voasarika avy amin'ilay regex.

Ohatra amin'ny fampiasana groups():

print(tel.groups())

Ho hitanao eo amin'ny valiny fa misaraka ho vondrona efatra ny laharana:

('033', '04', '302', '32')

Ireo vondrona ireo dia azo ampiasaina amin'ny fanodinana na fanitsiana ilay laharana araka ny filàna.

Fanovana Ny Laharana Ho Endrika Tokana

hanova

Ohatra iray amin'ny fanodinana ilay laharana ho amin'ny endrika tokana mampiasa teboka ho mpanasaraka:

tel_string = ''
for tel_nums in tel.groups():
    tel_string += ' %s' % tel_nums
tel_string = tel_string.strip()  # Manala ny espace amin'ny voalohan'ilay laharana
tel_string = tel_string.replace(' ', '.')  # Manolo ny espace ho teboka

Ho valin'izany dia azo ilay laharana toy izao:

033.04.302.32

Famaranana

hanova

Ny fampiasana regex amin'ny Python dia fomba matanjaka indrindra amin'ny fikarohana sy fanodikodinana kambantsoratra. Ny regex dia tena ilaina indrindra rehefa mitady lamina miverimberina na fikarohana soratra mifanaraka amin'ny fepetra manokana. Misy fitaovana maro ao amin'ny kitapom-pitaovan'ny re module ao amin'ny Python, ka manampy anao hampiasa regex amin'ny fomba mora sy mahomby amin'ny script-nao.

Afaka mianatra bebe kokoa momba ny regex ao amin'ny Python ianao amin'ny fandalinana ny antontan-kevitra ofisialy: re — Regular expression operations