Ang Gabay ng Baguhan sa Mga Regular na Pagpapahayag Sa Python

Ang Gabay ng Baguhan sa Mga Regular na Pagpapahayag Sa Python

Kung ikaw ay isang programmer, malamang na alam mo na kung anong mga regular na expression (regex). Ang mga pattern ng Regex ay ipinatupad sa halos bawat pangunahing wika ng programa, ngunit pa rin, ang lakas at kagalingan ng maraming kaalaman sa mga pattern na ito ay hindi makilala ng karamihan sa mga developer.





Ang gabay na ito ay tungkol sa mga regular na expression at kung paano mo magagamit ang mga ito sa wika ng programa ng Python.





Ano ang Mga Regular na Pagpapahayag?

Ang mga regular na expression ay mga pattern na makakatulong sa isang gumagamit na maitugma ang mga kumbinasyon ng character sa mga file ng teksto at mga string. Maaari kang gumamit ng mga regular na expression upang salain o makahanap ng isang tukoy na pattern sa output ng isang utos o isang dokumento.





Mayroong iba't ibang mga kaso ng paggamit ng mga regular na expression, ang pinaka kilalang pagiging ang utos ng grep sa Linux . Kasama sa iba pang mga application ang pagsala ng impormasyon tulad ng pagkuha ng mga email address at numero ng telepono mula sa isang dump ng data.

Ang pangunahing dahilan kung bakit maraming mga developer ang nalalayo mula sa mga regular na expression ay ang kawalan ng kamalayan tungkol sa lakas ng pagtutugma ng pattern. Ang ilan ay nakakahanap din ng nakalilito na mga regular na expression dahil sa napakaraming mga character at pagkakasunud-sunod na ginamit sa mga pattern.



Anuman ang dahilan, ang mga regular na expression ay at magiging isa sa pinakamahalagang aspeto ng programa na dapat malaman ng lahat.

kung paano sasabihin kung na-block ka sa instagram

Mga Regular na Pagpapahayag: Mga Parehong Character at Pagkakasunud-sunod

Ang Regex ay isang buong bagong wika sa sarili nito. Ang isang regex engine ay binibigyang kahulugan ang mga pattern na binubuo ng maraming mga character na nilagyan ng mga tiyak na kahulugan. Ang mga pangunahing literal tulad ng mga alphanumeric character ay tumutugma sa kanilang sarili. Ngunit ang mga kumplikadong character tulad ng $, *, +, {, atbp ay tumutulong sa pagtutugma ng mas mataas na pagkakasunud-sunod.





  1. Asterisk (*): Tumutugma sa naunang character na zero o higit pang beses. Ang literal na kahulugan ng character ay 'Element multiply n beses'. Halimbawa, kung ang regular na expression ay abc * , ang mga string na tumutugma ay magiging ab, abc, abcc, abccc, abcccc, atbp. Ang ekspresyon [bc] * tutugma sa bc, bcbc, bcbc, atbp.
  2. Higit pa (+): Tumutugma sa naunang karakter nang isa o higit pang mga beses. Ang pagtatrabaho ng + tauhan ay katulad ng * , ngunit ang + tinanggal ng character ang pattern kung hindi naganap ang character. Halimbawa, abc + tutugma sa abc, abcc, abccc, atbp ngunit hindi ab.
  3. Tandang pananong (?): Tumutugma sa naunang character na zero o isang beses (na) oras. Halimbawa, ang pattern abc? tutugma lang sa ab at abc.
  4. Pipe (|): Ginamit bilang isang binary O kaya operator Tumutugma sa alinman sa mga character na nauna at nagtagumpay sa tubo. Halimbawa, a | b ay tumutugma sa alinman sa a o b.
  5. Tuldok (.): Tumutugma sa isang character na ang pagkakakilanlan ay hindi kilala. Halimbawa, a.c tutugma sa aac, abc, acc, a2c, at iba pa.
  6. Carrot (^): Tumutugma sa unang tauhan sa pattern. Halimbawa, ^ Ra ay tumutugma sa mga salita na nagsisimula sa Palabas tulad ng Kuneho, Raccoon, at Random.
  7. Dolyar ($): Tumutugma sa huling character sa pattern. Halimbawa, isang $ ay tumutugma sa mga salita na nagtatapos sa isang tulad ng Van, Dan, at Plan.
  8. Hyphen (-): Ginamit upang tukuyin ang isang saklaw ng mga character. Halimbawa, [0-9] tutugma sa lahat ng mga solong digit na character na bilang.

Ang mga espesyal na pagkakasunud-sunod na ginamit sa regular na mga pattern ng pagpapahayag ay:

  1. TO: Nagbabalik ng isang tugma kung ang mga susunod na character ay naroroon sa simula ng string. Halimbawa, AThe tutugma sa mga salitang nagsisimula sa Ang tulad ng The, Them, They, etc.
  2. b: Nagbabalik ng isang tugma kung ang character ay matatagpuan sa alinman sa simula o sa dulo ng isang salita. Halimbawa, bmad at baliw b ay tumutugma sa mga salita tulad ng ginawa at palad ayon sa pagkakabanggit.
  3. B: Nagbabalik ng isang tugma kung ang character ay hindi matatagpuan sa simula o pagtatapos ng isang salita.
  4. d: Tumutugma sa mga numerong character na naroroon sa string. Halimbawa, / d * tutugma sa mga bilang tulad ng 1, 12, 1232, atbp.
  5. D: Tumutugma sa mga hindi numerong character sa string. / D tutugma sa a, b, c, f, atbp.
  6. s: Tumutugma sa isang character na whitespace sa teksto.
  7. S: Tumutugma sa isang character na hindi whitespace sa teksto.
  8. sa: Nagbabalik ng isang tugma kung naglalaman ang string ng mga alphanumeric character kasama ang mga underscore. Halimbawa, sa tutugma sa a, b, c, d, 1, 2, 3, atbp.
  9. SA: Nagbabalik ng isang tugma kung ang string ay hindi naglalaman ng mga alphanumeric character o underscore.
  10. MAY: Tumutugma sa mga character sa dulo ng isang string. Halimbawa, wakasan Z ay tumutugma sa mga salita na nagtatapos sa magtapos tulad ng liko, pag-ayos, pag-aalaga, atbp.

Mga Paraan ng Python para sa Regular na Pagpapahayag

Sa Python, ang re nagbibigay ang library ng lahat ng kinakailangang mga pagpapaandar at kagamitan na kinakailangan upang ipatupad ang regex sa iyong mga programa. Hindi mo kailangang mag-download ng silid-aklatan gamit ang pip habang ito ay paunang naka-install na sa Python interpreter.





Upang mai-import ang re library sa Python, idagdag ang sumusunod na code sa iyong script:

import re

Tandaan na habang nagpapasa ng mga regular na expression sa Python, gumagamit kami ng mga hilaw na string dahil hindi nila ito binibigyan kahulugan ng mga espesyal na character tulad ng n at t iba

Tugma ()

Ang re.match () ang paraan sa Python ay nagbabalik ng isang regex object kung ang programa ay makakahanap ng isang tugma sa simula ng tinukoy na string. Ang pagpapaandar na ito ay tumatagal ng dalawang pangunahing mga argumento:

re.match(pattern, string)

... saan pattern ay ang regular na expression at lubid ay ang teksto na kailangang hanapin.

Tingnan ang snippet ng code sa ibaba.

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

Ang r character bago ang string ay nangangahulugang hilaw na string.

Output:

None

Nagbabalik ang nabanggit na code Wala kasi Salita wala sa simula ng string.

Kung may nahanap na tugma, maaari mong mai-print ang tugma gamit ang pangkat () pamamaraan na kabilang sa regex object.

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

Output:

Word

Ang pananaliksik () tumatagal ang pamamaraan ng katulad na mga argumento bilang re.match (). Habang ang tugma () ay nagbabalik lamang ng mga tugma na naroroon sa simula ng string, maghanap () ibabalik ang mga tugma na matatagpuan sa anumang index sa string.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

Tandaan na ang tugma () at maghanap () ibabalik lamang ng mga pamamaraan ang isang pagtutugma sa pattern. Sa nabanggit na code, Salita lumilitaw ng dalawang beses. Ngunit ang maghanap () tugma ay tutugma lamang sa unang paglitaw ng salita.

Word

Hanapin lahat()

Tulad ng mahuhulaan mo na, ang Hanapin lahat() ibinalik ng pamamaraan ang bawat posibleng tugma sa string.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

Sa halip na ibalik ang isang regex object, ang function ng findall () ay nagbabalik ng isang listahan ng lahat ng mga tugma. Maaari kang umulit sa pamamagitan ng listahan gamit ang a para sa loop sa sawa .

Hatiin ()

Kung nais mong hatiin ang isang string sa mga sub-string gamit ang isang pattern bilang isang delimiter, kung gayon ang hatiin () ang pagpapaandar ang kailangan mo.

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

Output:

['This word', 'that', 'this are different.']

Sub ()

Ang sub () Pinapayagan ng pamamaraan ang isang gumagamit na palitan ang isang tukoy na salita sa lugar ng isang pattern. Tumatagal ito ng mga sumusunod na argumento.

re.sub(pattern, replacement, string)

Isaalang-alang ang snippet ng code na ito:

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

Output:

Dave or Harry must be punished.

Compile ()

Ang re.compile () pamamaraan sa re Pinapayagan ng library ang isang gumagamit na mag-imbak ng isang naipong bersyon ng regular na pattern ng pagpapahayag sa memorya. Pagkatapos, gamit ang naipon na object, maaaring mabilis na mai-filter ng gumagamit ang tinukoy na text dump para sa mga naitugmang pattern.

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

Ang pagpapaandar na ito ay pangunahing ginagamit para sa pag-save ng mga pattern na masinsinang mapagkukunan at kailangan ng maraming oras upang tumakbo. Ang pag-iipon at pag-save ng pattern bilang isang bagay muna ay nalulutas nito ang isyung ito.

Gamitin ang Lakas ng Regex Sa Python

Kapag nagtatrabaho ka sa mga file ng teksto at output, ang regex ay isang mahusay na tool na magagamit mo. Maaari mong mabilis na magsulat ng ilang code upang ma-filter o palitan ang mga tukoy na pattern sa dokumento.

Ang pagsasaulo ng lahat ng mga character at pagtutugma ng mga pagkakasunud-sunod ay maaaring maging mahirap kung nagsisimula ka lamang sa regex. Upang maging mas mahusay sa mga regular na expression, na tumutukoy sa isang listahan ng mga character, pamamaraan, at pagkakasunud-sunod tuwing ngayon ay tiyak na makakatulong sa iyo sa pangmatagalan.

Magbahagi Magbahagi Mag-tweet Email Ang Python RegEx Cheat Sheet para sa Budding Programmers

Gamitin ang listahang ito ng mga regular na expression ng Python upang maaari kang maging mas mahusay sa paggamit ng maraming nalalaman na wika ng programa.

Basahin Susunod
Mga Kaugnay na Paksa
  • Programming
  • Programming
  • Sawa
Tungkol sa May-akda Deepesh Sharma(79 na Artikulo Nai-publish)

Ang Deepesh ay ang Junior Editor para sa Linux sa MUO. Nagsusulat siya ng mga gabay sa kaalaman sa Linux, na naglalayong magbigay ng isang maligayang karanasan sa lahat ng mga bagong dating. Hindi sigurado tungkol sa mga pelikula, ngunit kung nais mong pag-usapan ang tungkol sa teknolohiya, siya ang iyong tao. Sa kanyang libreng oras, mahahanap mo siya na nagbabasa ng mga libro, nakikinig sa iba't ibang mga genre ng musika, o tumutugtog ng kanyang gitara.

Higit pa Mula sa Deepesh Sharma

Mag-subscribe sa aming newsletter

Sumali sa aming newsletter para sa mga tip sa tech, pagsusuri, libreng ebook, at eksklusibong deal!

Mag-click dito upang mag-subscribe