Magsimula sa Regex: Madali na Madali ang Mga Ekspresyon

Pagbubunyag: Tumutulong ang iyong suporta na panatilihing tumatakbo ang site! Kumikita kami ng bayad sa referral para sa ilan sa mga serbisyong inirerekumenda namin sa pahinang ito.


Ang isang regular na expression, regex o regexp para sa maikli, ay isang pagkakasunud-sunod ng mga titik at simbolo na tumutukoy sa isang lohikal na pattern. Ang mga string ng teksto ay maaaring ihambing sa pattern upang matukoy ang mga string na tumutugma sa lohikal na pattern na tinukoy ng regex. Sa batayan ng paghahambing na ito, maaaring magamit ang regex upang makilala ang mga string ng teksto na nakakatugon sa mga tiyak na kinakailangan o upang mapatunayan na ang mga string ay nakakatugon sa isang kinakailangang pattern.

Kung ang paliwanag ng regex ay tila medyo mahirap unawain, marahil ang pagtingin sa ilang mga karaniwang paggamit ng regex ay makakatulong na linawin ang kanilang pagiging kapaki-pakinabang. Ginagamit ang Regex sa lahat ng oras sa computer programming. Halimbawa, narito ang ilang karaniwang mga gamit para sa regex:

  • Upang mapatunayan na ang isang email address na ipinasok sa isang web form ay isang maayos na formulated email address.
  • Upang makilala ang lahat ng mga file sa isang computer system na magtatapos sa isang tiyak na extension ng file.
  • Upang suriin ang mga URL na hiniling ng isang web server at magsagawa ng mga pag-redirect kung ang mga URL ay nakakatugon sa isang pattern ng regex.

Mahalagang maunawaan na ang regex ay isang lohikal na sistema para sa paglalarawan ng mga pattern at hindi isang wika. Gayunpaman, ang regex ay ipinatupad sa maraming iba’t ibang mga wika sa programming at maaari ring magamit para sa paghahanap ng teksto sa maraming mga editor ng teksto.

Kasaysayan ng Regex

Ipinanganak si Regex bilang isang prinsipyo ng teoretikal na pang-agham na computer nang nilikha ito noong 1956 ni matematika na si Stephen Cole Kleene. Sa una, ang regex ay puro teoretikal. Gayunpaman, noong 1968 ginamit ito sa isang application ng computer sa kauna-unahang pagkakataon nang isama ito ni Ken Thompson sa editor ng teksto ng QED. Si Thompson ay hindi nag-iisa sa kanyang pag-ampon ng regex. Sa paligid ng parehong oras, isinama ang Douglas T Ross regex para sa lexical analysis sa isang tagatala.

Ang mga unang pagpapatupad ng regex ay agad na sinundan. Noong unang bahagi ng 1970, ang mga regex na lohikal na pattern ay naidagdag sa Unix text editor, ed. Pagkaraan ng ilang sandali, ang regex parser na binuo sa ed ay na-rotate bilang isang nakapag-iisa na Unix utility na tinatawag na grep. Sa puntong iyon lamang ang oras bago ang suporta ng regex ay isinama sa maraming mga kagamitan sa Unix at aplikasyon kabilang ang vi, lex, sed, Awk, expr, Emacs, at marami pa.

Sa pamamagitan ng oras ng regex ay natagpuan ang paraan nito sa iba’t ibang sulok ng operating system ng Unix na ito ay nakumpiska. Gayunpaman, mayroon pa ring silid para sa pagpapabuti. Kaya’t ang orihinal na regex syntax na binuo ni Kleene ay pinabuting noong 1980s kapag ang suporta para sa pinalawak na mga pattern ng regex ay naidagdag kay Perl batay sa isang pinalawak na librong regex na isinulat ni Henry Spencer. Gayunpaman, kahit na matapos ang pagdaragdag ng regex kay Perl Spencer ay nagpatuloy sa pagpapalawak ng ideya at sa paglaon at mas advanced na pag-ulit ng kanyang aklatan ay itinayo sa wikang programming ng Tcl – at ang pagpapatupad nito sa kalaunan ay naging daan sa mga high-profile na modernong mga proyekto sa pamamahala ng impormasyon tulad ng PostgreSQL.

Sa buong 1980s, ang regex ay hindi kailanman na-standardize. Gayunpaman, nagbago ito noong 1992 nang ang regex ay na-standardize sa POSIX.2. Ngayon, ang regex ay suportado ng maraming iba’t ibang mga wika sa programming at text editor. Karamihan sa mga modernong pagpapatupad ay sumusunod sa POSIX ngunit sa pangkalahatan ay nagpapalawak sa pamantayan ng POSIX sa iba’t ibang paraan na nag-iiba mula sa isang pagpapatupad hanggang sa susunod. Bilang isang resulta, habang ang mga pangunahing pattern ng regex sa pangkalahatan ay tumutugma mula sa isang pagpapatupad hanggang sa susunod, ang mga advanced na pattern ay maaaring magkakaiba-iba depende sa kapaligiran kung saan sila inilalapat.

Paano gumagana ang Regex

Ang isang regular na expression ay isang kumbinasyon ng dalawang uri ng mga character: literals at mga espesyal na character. Sa kumbinasyon, ang mga character na ito ay tumutukoy sa isang lohikal na pattern. Ang mga string ng teksto ay maaaring ihambing sa pattern na ito upang makita kung naaangkop nila ang pattern na tinukoy ng expression.

Ang mga character na pampanitikan ay kumakatawan sa kanilang sarili. Nangangahulugan ito na ang isang literal na liham ay kumakatawan sa letra ng at isang literal na numero 1 ay kumakatawan sa numero 1. Gayunpaman, ang regex ay hindi masyadong mahalaga kung limitado sa literal na mga character. Ang mga espesyal na character ay kung ano ang gumawa ng kapaki-pakinabang na regex.

Ang mga espesyal na character ay may isang lohikal na kahulugan sa loob ng pattern ng regex. Halimbawa, tingnan natin ang tuldok. Ang tuldok, o panahon, ay ginagamit upang kumatawan sa anumang karakter. Kaya,. Ay magkatugma sa anumang pagkakasunod-sunod ng dalawang karakter na kung saan ang pangalawang karakter ay ang literal na titik a. Nangangahulugan ito na ang ba, 1a, -a, aa, at ang liham na pinauna ng isang walang laman na puwang ay magkatugma lahat ng pattern ng regex.

Ang tuldok ay hindi lamang ang espesyal na karakter sa regex. Mayroong sa paligid ng isang dosenang mga espesyal na character na maaaring pagsamahin sa mga literals upang ilarawan ang mga kumplikadong lohikal na pattern. Tingnan natin ang dalawang halimbawa kung paano pinagsama ang mga literatura at mga espesyal na character upang tukuyin ang mga kumplikadong expression:

  • Kung nais mong tiyakin na ang isang string ng teksto ay isang email address maaari mong subukan ito laban sa pattern ng regex na ito: ^ [A-Z0-9 ._% + -] [protektado ng email] [A-Z0-9.-] +. [AZ] {2,} $.
  • Upang i-scan ang mga pangalan ng file at mahuli ang anumang natapos sa .php file extension, maaari mong gamitin ang sumusunod na regex: ^. *. Php $.

Kung bago ka upang mag-regex, ang mga pattern na iyon ay marahil nakalilito. Upang maunawaan kung paano gumagana ang mga pattern na iyon, kailangan mong maunawaan kung ano ang ibig sabihin ng lahat ng mga espesyal na character.

Mga Espesyal na Character ng Regex

Habang ang bawat pagpapatupad ng regex ay nag-iiba nang kaunti sa ilang mga regards, sa pangkalahatan ay tinatrato nila ang mga espesyal na character na ito sa parehong paraan na may kaunting mga pagbubukod.

  • : Ang character na backslash ay ginagamit upang makatakas sa iba pang mga espesyal na character. Kaya kung nais mong makatakas sa ibang karakter, tulad ng tuldok, upang mabigyan ito ng kahulugan bilang isang literal na karakter, magagawa mo ito sa pamamagitan ng pag-una sa tuldok na may pag-urong tulad nito: .
  • ^: Ang isang uptick ay ginagamit upang ipahiwatig ang panimulang posisyon sa isang string. Ang regex ^ a ay tutugma sa anumang string na nagsisimula sa literal na titik a.
  • $: Ang isang senyas na dolyar ay ginagamit upang tumugma sa posisyon ng pagtatapos sa isang string. Ang regex ng $ ay tutugma sa anumang string na nagtatapos sa literal na titik a.
  • .: Ang tuldok o tagal ng panahon ay tumutugma sa anumang karakter maliban sa isang bagong linya (n) character. Ang regex 1.3 ay magkatugma sa anumang string na may literal na isa, anumang character, at isang literal na tatlo tulad ng 123, 1a3, at kahit 1 3.
  • |: Ang vertical pipe ay isang pagpipilian ng operator at maaaring ma-kahulugan bilang isang stand-in para sa salita o. Kaya ang regex a | b ay mababasa bilang “a o b” at tumutugma sa alinman sa liham a o sulat b.
  • *: Isang asterisk ay ginagamit upang tumugma sa naunang character na zero o mas maraming beses. Kaya ang regex. * Ay tumutugma sa anumang string hangga’t hindi ito naglalaman ng isang bagong character na character.
  • ?: Ang marka ng tanong ay tutugma sa naunang character na zero o isang beses, ngunit wala na. Ang regex 123? ay samakatuwid ay tumutugma sa alinman sa 12 o 123.
  • +: Ang isang simbolo ng plus ay tumutugma sa naunang character ng isa o higit pang mga beses, ngunit ang karakter ay dapat lumitaw nang hindi bababa sa isang beses, hindi katulad ng asterisk na tumutugma sa naunang character na zero o higit pang mga beses. Kaya, ang regex a * b + ay magkatugma sa ab at b, ngunit hindi dahil ang b ay dapat lumitaw nang hindi bababa sa isang beses dahil sa paggamit ng plus simbolo.
  • […]: Ang mga bracket ay tumutugma sa isang solong karakter na nilalaman sa loob ng mga bracket. O kaya, maaaring idagdag ang isang uptick, tulad nito [^ …], upang tumugma sa anumang character na hindi nakapaloob sa loob ng mga bracket. Hindi mo na kailangang makatakas sa mga espesyal na character sa loob ng mga bracket, bibigyan sila ng kahulugan bilang mga literatura. Ang mga bracket ay madalas na ginagamit upang tukuyin ang mga saklaw ng mga character. Halimbawa, ang regex [0-9] ay magkatugma sa anumang solong digit at [A-Z] ay tutugma sa anumang malalaking titik sa alpabetong Ingles. Sa wakas, ang mga bracket ay maaaring maglaman ng mga character na hiwalay na comma. Kaya [a, g] ay magkatugma sa alinman sa mga titik a at g.
  • {…}: Ang mga kulot na braces, na tinatawag na tahasang dami, ay tukuyin ang bilang ng mga beses na dapat lumitaw ang naunang karakter. Ang regex ab {2} c ay maaari lamang matugunan ng abbc. Ang isang pangalawang numero ay maaaring maidagdag upang lumikha ng isang hanay ng mga katanggap-tanggap na halaga. Kaya, ang ab {2,3} c ay magkatugma sa alinman sa abbc o abbbc at ang [0-9] {1,2} ay magkatugma sa alinman sa isa o dalawang numero na numero.
  • (…): Ginagamit ang Parenthesis upang markahan ang isang subexpression sa loob ng isang mas malaking expression. Kaya ang regex (abc) * ay tumutugma sa anumang string na binubuo ng mga titik abc, ngunit ang lahat ng tatlong mga titik ay dapat na lumitaw nang magkasama at sa pagkakasunud-sunod na.

Sa kanilang sarili, ang mga espesyal na character ay medyo kapaki-pakinabang. Nasa kumbinasyon ng mga espesyal na character na ito na may mga literal na maaaring malarawan ang mga malalakas na pattern. Ang listahan ng mga espesyal na character sa itaas ay nagsasama ng ilang simpleng mga espesyal na kumbinasyon ng character. Tingnan ang isang pangalawang pagtingin sa regex para sa pagkilala sa mga file ng PHP upang makita kung paano nagtutulungan ang mga character na ito.

Narito ang regex na pinag-uusapan: ^. *. Php $. Hayaan itong dalhin nang isang piraso.

  • ^ nagpapahiwatig ng simula ng string string, na sa kasong ito ay isang file name.
  • .* Magtulungan upang ipahiwatig na ang pangalan ng file ay maaaring maglaman ng anumang bilang ng anumang mga character, ngunit walang mga newlines.
  • .Nagsisimula ang php sa isang character na makatakas na nagsisiguro na ang tuldok ay binibigyang kahulugan bilang isang literal sa halip na isang espesyal na karakter. Susunod, ang literal na mga titik php ay nagpapahiwatig na pagkatapos ng pangalan ng file, nais naming suriin para sa pagsasama ng isang tuldok at mga titik php.
  • Ipinapahiwatig ng $ na dapat na lumitaw ang extension ng .php sa dulo ng string ng paghahanap upang maging isang tugma.

Tulad ng nakikita mo, sa siyam na character lamang na ang regex na ito ay namamahala upang lumikha ng isang lohikal na pattern na maaaring mag-ayos sa mga kumplikadong pangalan ng file at matukoy ang mga nagtatapos sa extension ng file ng ph..

Unicode at Regex

Ang isa sa mga problema na maaaring tumubo kapag nakitungo sa regex ay kung paano haharapin ang mga wika na gumagamit ng mga character na hindi bahagi ng modernong alpabetong Ingles. Ang Unicode ay isang pamantayan sa pag-encode na sumusubok na malutas ang problemang ito sa pamamagitan ng pag-encode ng mga numero sa mga halaga ng numero.

Ang ilang mga pagpapatupad ng regex ay sumusuporta sa paggamit ng Unicode upang makabuo ng mga pattern ng regex, nangangahulugang ang mga pattern ng regex ay maaaring malikha na maaaring subukan ang mga string na kasama ang mga character mula sa iba’t ibang mga wika. Bilang karagdagan, ang mga expression ng Unicode ay maaaring pagsamahin sa mga literals at mga espesyal na character upang bumuo ng mga kumplikadong pattern ng regex.

Ang ilan sa mga pinaka-karaniwang pattern ng Unicode regex ay kinabibilangan ng:

  • p {L}: Tumutugma sa anumang liham sa anumang wika. Kaya, ang p {L} {2,4} ay tumutugma sa anumang pagkakasunud-sunod ng mga titik sa pagitan ng dalawa at apat na character ang haba.
  • p {Z}: Mga tumutugma sa anumang mga character na espasyo.
  • p {N}: Mga tumutugma sa mga character na numero.
  • p {P}: Mga character na bantas.

Maraming mga karagdagang pag-aari ng Unicode na maaari mong magamit kapag nagtatayo ng mga regular na expression, ibinigay ang pagpapatupad na nagtatrabaho ka sa mga sumusuporta sa Unicode regex. Upang malaman ang higit pa, basahin ang Mga Unicode Regular Expression sa Regular-Expressions.info.

Mga mapagkukunan

Kami ay saklaw na sapat lamang sa panimulang aklat na ito upang mabigyan ka ng isang pangunahing pakiramdam para sa kung paano gumagana ang regex at kung paano mo magagamit ito upang matukoy ang mga tukoy na piraso ng code at teksto sa isang text editor o upang makilala at mapatunayan ang data sa isang computer na application. Upang malaman ang higit pa, tingnan ang mga sumusunod na mapagkukunan na nagbigay ng mas advanced na impormasyon kaysa sa nasaklaw namin sa maikling panuto na ito:

  • Regular-Expressions.info: isang kayamanan ng kaalaman tungkol sa regex sa anyo ng mga artikulo at mga tutorial.
  • Regex Cheatsheet mula sa RegExLib.com: isang kapaki-pakinabang na cheatsheet na makakatulong sa iyo na mapanatili ang lahat ng iba’t ibang mga espesyal na character na diretso.
  • RegExLib.com: isang libreng imbakan ng mga regular na expression na maaari mong kopyahin at baguhin upang umangkop sa iyong mga pangangailangan.

Ang isa sa mga pinakamahusay na paraan upang makuha ang hang ng pagsulat ng mga regular na expression ay upang simulang isulat ang mga ito. Ang mga sumusunod na online na tool ay magpapahintulot sa iyo na gawin lamang iyon, paghahambing ng iyong pasadyang regex sa isang bloke ng pasadyang teksto sa fly upang malaman mo kung paano mabuo ang mga regular na expression na gumagana:

  • RegExr: sinasabi ng tagline ang lahat, “Alamin, Buuin, at Pagsubok ng RegEx.”
  • Regex Pal: lumikha ng isang pattern ng regex at pagkatapos ay subukan ang mga strings laban dito upang matiyak na ginagawa nito mismo ang nais mong gawin.
  • Regex 101: hindi lahat ng pagpapatupad ng regex ay nilikha pantay. Gumamit ng tool na ito upang masubukan ang mga string laban sa pattern ng regex at pinong pag-uugali ng tune batay sa programming language kung saan mo ipatutupad ang pattern. Suportado ang PHP, JavaScript, Python, at Erlang.

Ang ilang mga teksto ay isinulat tungkol sa regex, ngunit ang tatlo ay nakatayo bilang pinakamahusay sa klase. Kung nais mong makabisado ang regex, ang alinman sa tatlong mga teksto na ito ay pupunta sa mahabang paraan patungo sa iyo roon:

  • Mga Regular na Pagpapahayag Cookbook: Mga Detalyadong Solusyon sa Walong Programming Languages ​​(2012) ni Goyvaerts at Levithan
  • Ipinakikilala ang Regular na mga Pagpapahayag (2012) ni Michael Fitzgerald
  • Mastering Regular Expressions (2006) ni Jeffrey E F Friedl.

Buod

Ang mga regular na expression ay isang tool na independiyenteng wika na ginagamit ng mga programer ng computer upang makabuo ng mga lohikal na pattern. Ang mga pattern na ito ay maaaring magamit upang makilala ang mga string ng teksto na akma sa pattern. Ang mga pagpapatupad ng Regex ay malaki at regex ay suportado ng karamihan sa mga modernong wika na programa at magagamit sa loob ng mga tool sa paghahanap na binuo sa maraming mga editor ng teksto. Ang pagsisimula sa regex ay maaaring maging mahirap hawakan, ngunit ang mastering regex ay isang kinakailangang hakbang sa pag-unlad ng anumang computer programmer.

Karagdagang Pagbasa at Mga Mapagkukunan

Mayroon kaming higit pang mga gabay, mga tutorial, at mga infograpiko na nauugnay sa mga computer at coding:

  • Mga Mapagkukunan ng Programa ng Bash: magsimula sa pinakamahalagang unix shell ng linya ng utos.
  • Sed Panimula at Mga Mapagkukunan: ang stream editor ay isang mahusay na tool para sa paggamit at pag-aaral ng mga regular na expression.
  • Mga Mapagkukunang Awk: alamin ang lahat tungkol sa tool ng kapatid ng sed ng Awk.

Ang Ultimate List ng Mga Tool sa Webmaster A-Z

Ang Sed at Awk at Bash ay bahagi lamang ng isang malaking koleksyon ng mga tool na nagpapahintulot sa mga administrador ng system na pamahalaan ang mga operating system. Ang Ultimate List of Webmaster Tools A-Z ay magbibigay sa iyo ng maraming tulong sa paggawa ng iyong trabaho.

Ang Ultimate List ng Mga Tool sa Webmaster A-Z
Ang Ultimate List ng Mga Tool sa Webmaster A-Z

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map