Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development

8 Regular Expressions Na Iyong Dapat Malaman

by
Read Time:9 minsLanguages:

Tagalog (Wikang Tagalog) translation by Anna Nelson (you can also view the original English article)

Ang regular expressions ay language din. Kapag nag-aaral ka ng bagong programming language, ito ay ang maliit na sub-language na mukhang walang saysay sa unang tingin. Madalas kailangan mong magbasa ng iba pang pagtuturo, artikulo, o libro para lang maintindihan ang “simpleng” pattern na inilarawan. Ngayon, susuriin natin ang walong regular expressions na iyong dapat malaman para sa iyong susunod na coding project.

Bago tayo magsimula, baka gusto mong tingnan ang ilan sa regex apps sa Envato Market, katulad ng RegEx Extractor.

Maaari mong i-extract ang emails, proxies, IPs, mga numero ng telepono, addresses, HTML tags, URLs, links, mga petsa, at iba pa. Ilagay lang ang isa o maraming regular expressions at sources URLs, at simulan ang proseso.

Extract, scrape, parse, harvest.

Halimbawa ng Paggamit

  • I-extract ang emails mula sa lumang CSV address book.
  • I-extract ang image sources mula sa HTML files.
  • I-extract ang proxies mula sa online websites.
  • I-extract ang resulta ng URL mula sa Google.

Background Info sa Regular Expressions

Narito ang masasabi ng Wikipedia tungkol dito:

Sa computing, ang regular expressions ay nagbibigay ng maiksi at flexible na paraan sa pagtukoy ng strings of text na gusto, katulad ng partikular na characters, words, o patterns ng characters. Ang regular expressions (pinaiksi bilang regex or regexp, na may plural forms na regexes, regexps, or regexen) ay nakasulat sa pormal na language na maaaring ipaliwanag ng regular expression processor, isang program na alinman sa nagsisilbing parser generator o sumusuri ng text at tumutukoy ng mga bahagi na akma sa binigay na detalye.

Ngayon, sa totoo lang hindi naman nito masyadong nailahad ang tungkol sa aktwal na patterns. Ang regexes na aking titingnan ngayon ay naglalaman ng characters katulad ng \w, \s, \1,at marami pang iba na naglalarawan ng isang bagay na ibang-iba sa kung ano ang itsura nito.

Kung gusto mong matutunan nang kaunti ang tungkol sa regular expressions bago ka magpatuloy sa pagbabasa ng artikulong ito, iminumungkahi ko na panoorin ang Regular Expressions para sa serye ng Dummies screencast.

Sa walong regular expressions na titingnan  natin ngayon ay maitutugma mo ang a(n): username, password, email, hex value (tulad ng #fff o #000), slug, URL, IP address, at ang HTML tag. Habang humahaba ang listahan, ag regular expressions ay long nakakalito. Ang mga larawan sa bawat regex sa simula ay madaling sundin, subalit ang huling apat ay mas madaling maintindihan sa pamamagitan ng pagbasa ng paliwanag.

Ang pangunahing bagay na dapat tandaan tungkol sa regular expressions ay ito ay halos binabasa nang pasulong at pabalik nang sabay. Ang pangungusap na ito ay magkakaroon ng kabuluhan kapag pinagusapan natin ang tungkol sa pagtutugma ng HTML tags.

Tandaan: Ang delimiters na ginamit sa regular expressions ay pasulong na slashes "/". Bawat pattern ay nagsisimula at nagtatapos sa delimiter. Kapag ang pasulong na slash ay lumabas sa regex,kailangan natin itong i-escape ng backslash: "\/".


1. Pagtutugma ng Username

Matching a usernameMatching a usernameMatching a username

Pattern:

Paglalarawan:

Magsisimula tayo sa pamamagitan ng pagsabi sa parser na na hanapin ang simula ng string (^), kasunod nito kahit na anong lowercase na letra(a-z), numero na (0-9), salungghuhit, o gitling. Sunod, {3,16} siguraduhin na mayroong kahit papaano 3 sa mga characters na iyon, subalit hindi lalagpas sa 16. At ang panghuli, gusto natin ang dulo ng string ($).

String na nagkakatugma:

my-us3r_n4m3

String na hindi nagkakatugma:

th1s1s-wayt00_l0ngt0beausername (sobrang haba)


2. Pagtutugma ng Password

Matching a passwordMatching a passwordMatching a password

Pattern:

Paglalarawan:

Ang pagtutugma ng password ay sobrang pareho ng pagtutugma ng username. Ang pagkakaiba lang ay sa halip na 3 hanggang 16 na letra, mga numero, salungguhit, o gitling, gusto natin 6 hanggang 18 nito ({6,18}).

String na nagkakatugma:

myp4ssw0rd

String na hindi nagkakatugma:

mypa$$w0rd  (nagtataglay ng dollar sign)


3. Pagtutugma ng Hex Value

Matching a hex valudMatching a hex valudMatching a hex valud

Pattern:

Paglalarawan:

Magsisimula tayo sa pamamagitan ng pagsabi sa parser na hanapin ang simula ng string (^). Sunod, ang number sign ay opsyonal dahil sinusundan ito ng tandang pananong. Sinasabi ng tandang pananong sa parser na ang naunang character — sa bagay na ito ay number sign — ay opsyonal, subalit huwag maging “sakim” at ilagay ito kung ito ay naroon. Sunod, sa loob ng unang grupo (unang grupo ng panaklong),maaari tayong magkaroon ng dalawang magkaibang sitwasyon. Ang una ay kahit na anong lowercase na letra sa pagitan ng a at f o kaya numero na anim na beses. Ang patayong bar ay sinasabing puwede din tayong magkaroon ng tatlong lowercase na mga letra sa pagitan ng a at f o kaya sa halip ay mga numero. At ang panghuli, gusto nating ang dulo ng string ($).

Ang dahilan kung bakit naglagay ako ng anim na character dati ay dahil ika-capture ng parser ang hex value na tulad nito #ffffff. Kung binaliktad ko ito para ang tatlong characters ang nauna, kukunin lang ng parser ang #fff at hindi ang ibang tatlong f’s.

String na nagkakatugma:

#a3c113

String na hindi nagkakatugma:

#4d82h4  (naglalaman ng letrang h) 


4. Pagtutugma ng Slug

Matching a slugMatching a slugMatching a slug

Pattern:

Paglalarawan:

Gagamitin mo itong regex kung gagawa ka sa mod_rewrite at pretty URL's. Magsisimula tayo sa pamamagitan ng pagsabi sa parser na hanapin ang simula ng string (^), susundan ng isa o higit pa (ang plus sign) mga letra, mga numero, o mga gitling. At ang panghuli, gusto natin ang dulo ng string ($).

String na nagkakatugma:

my-title-here

String na hindi nagkakatugma:

my_title_here  (naglalaman ng salungguhit)


5. Pagtutugma ng Email

Matching an emailMatching an emailMatching an email

Pattern:

Paglalarawan:

Magsisimula tayo sa pamamagitan ng pagsabi sa parser na hanapin ang simula ng string (^). Sa loob ng unang grupo, itutugma natin ang isa o higit pang lowercase na letra, mga numero, salungguhit, mga tuldok, o gitling.  Iniscape ko ang dot dahil ang no-escaped dot ay ibig sabihin kahit anong character. Pagkatapos agad , dapat mayroong at sign.  Sunod ay ang pangalan ng domain na dapat ay: 1 o higit pa na lowercase na mga letra, mga numero, salungguhit, mga tuldok, o gitling. Pagkatapos ay isa pang (escaped) dot, na may extension na dalawa hanggang anim na letra o mga tuldok. Mayroon akong 2 hanggang 6 dahil sa partikular sa bansa na TLD's (.ny.us o .co.uk). At ng panghuli, gusto natin ang dulo ng string ($).

String na nagkakatugma:

john@doe.com

String na hindi nagkakatugma:

john@doe.something (Ang TLD ay masyadong mahaba) 


6. Pagtutugma ng URL

Matching a urlMatching a urlMatching a url

Pattern:

Paglalarawan:

Ang regex na ito ay halos parang pagtanggal ng panghuling bahagi ng nasa itaas na regex, paglalagay nito sa pagitan ng "http://" at ilang file structure sa dulo. Mukha itong mas simple kaysa sa totoo. Para magsimula, hinanap namin ang simula ng linya gamit ang caret.

Ang unang capturing group ay lahat opsyon. Dito ang URL ay maaaring magsimula sa "http://", "https://", o alinman dito ay hindi. Mayroon akong tandang pananong pagkatapos ng s para magkaroon ang URLs ng may http o https. Para ang buong grupo ay maging opsyonal, naglagay lang ako ng tandang pananong sa dulo nito.

Sunod ay ang pangalan ng domain: isa o higit pang mga numero, mga letra,mga tuldok, o mga gitling kasunod ng iba pang tuldok pagkatapos ay dalawa hanggang anim na letra o mga tuldok. Ang susunod na bahagi ay opsyonal na files at directories. Sa loob ng grupo, gusto natin na itugma ang kahit na anong numero ng pasulong na slashes, mga letra, mga numero, mga salungghuhit, mga puwang, mga tuldok, o mga gitling. At sinasabi natin na ang grupong ito ay maaaring itugma nang maraming beses hanggat gusto natin. Halos dito ay matutugma ang iba’t ibang directories kasama ng file sa dulo. Ginamit ko ang star sa halip na tandang pananong dahil sinasabi ng star ay zero o higit pa, hindi zero o one. Kung tandang pananong ang gagamitin dito, isa lang na file/directory ang matutugma.

Pagkatapos ang trailing slash ay itutugma, subalit maaari itong opsyonal.  At ang panghuli tatapusin natin sa dulo ng linya.

String na nagkakatugma:

https://net.tutsplus.com/about

String na hindi nagkakatugma:

http://google.com/some/file!.html (naglalaman ng tandang padamdam)


7. Pagtutugma ng IP Address

Matching an IP addressMatching an IP addressMatching an IP address

Pattern:

Paglalarawan:

Ngayon, magsisinungaling ako, hindi ko sinulat itong regex; nakuha ko ito dito. Ngayon, hindi  ibig sabihin na hindi ko paghihiwalayin character sa character.

Ang unang capture group ay hindi naman talaga captured group dahil

niilagay sa loob na sinasabi sa parser na huwag i-capture ang grupong ito (mas tatalakayin ito sa dulong regex). Gusto din natin ang non-captured group na maulit nang tatlong beses — ang  {3} sa dulo ng grupo. Ang grupong ito ay nagtataglay ng iba pang grupo, subgroup, at literal dot. Ang parser ay naghahanap ng katugma sa subgroup at tuldok para magpatuloy.

Ang subgroup ay isa pang non-capture group. Ito ay grupo ng character sets(mga bagay sa loob ng brackets): ang string “25” na sinusundan ng numero sa pagitan ng 0 at 5; o ang string “2” at ang numero sa pagitan ng 0 at 4 at kahit na anong numero; o ang opsyonal zero o one na sinusundan ng dalawang numero, na ang pangalawa bilang opsyonal.

Pagkatapos nating pagtugmain ang tatlo sa mga ito, papunta ito sa sunod na non-capturing group. Ang isang ito ay gusto: ang string “25” na sinusundan ng numero sa pagitan ng 0 at 5; o ang string “2” at ang numero sa pagitan ng 0 at 4 at kahit na anong numero; o ang opsyonal zero o one na sinusundan ng dalawang numero, na ang pangalawa bilang opsyonal.

Tatapusin natin itong nakakalitong regex sa dulo ng string.

String na nagkakatugma:

73.60.124.136 (hindi, hindi iyon ang aking IP address:P)

String na hindi nagkakatugma:

256.60.124.136  (ang unang group ay dapat “25” at ang numero sa pagitan ng zero at five)


8. Pagtutugma ng HTML Tag

Matching an HTML tagMatching an HTML tagMatching an HTML tag

Pattern:

Paglalarawan:

Isa sa mas mahalagang regexes sa listahan. Tinutugma nito ang kahit na anong HTML tag sa content sa loob. Gaya ng dati, nagsisimula tayo sa umpisa ng linya.

Una ang pangalan ng tag. Kailangan ito ay isa o higit pa na haba ng letra. Ito ang unang capture group, mahalaga ito kapag kailangan natin ang closing tag. Ang sunod ay ang tag's attributes. Ito ay hindi maaaring kahit na anong character maliban sa greater than sign(>).  Dahil ito ay opsyonal, subalit gusto kong itugma sa mahigit isang character, ang star ang ginamit. Ang plus sign ang bumubuo sa attribute at value, at ang star ay nagsasabi ng maraming attributes sa hanggang gusto mo.

Sunod ang pangatlong non-capture group. Sa loob, maglalaman ito ng alinman sa greater than sign, ilang content, at closing tag; o ilang puwang, pasulong na slash, at greater than sign. Ang unang opsyon ay naghahanap ng greater than sign na sinusundan ng kahit anong number of characters, at ang closing tag. \1 is ay ginagamit para ipakita ang content na na-capture sa unang capturing group. Sa bagay na ito, ito ay ang pangalan ng tag.  Ngayon, kung hindi ito matutugma gusto nating maghanap ng self-closing tag (katulad ng img, br, o hr tag). Kailangan mayroon itong isa o higit pang puwang na susundan ng "/>".

Ang regex ay natatapos sa dulo ng linya.

String na nagkakatugma:

Nettuts">http://net.tutsplus.com/">Nettuts+

String na hindi nagkakatugma:

<img src="img.jpg" alt="My image>" /> (ang attributes ay hindi dapat magkaroon ng greater than signs)


Konklusyon

Sana ay naunawaan ninyo ang mga ideya sa likod ng regular expressions kahit papaano nang mas mabuti. Sana gagamitin niyo ang regexes sa mga darating na proyekto! Maraming beses na hindi mo kailangang basahin ang regex character bawat character, subalit minsan pag ginawa mo ito matututo ka. Basta tandaan, huwag matakot sa regular expressions, mukha lang hindi, subalit napapagaan nito ang iyong buhay. Subukan lang at kumuha ng pangalan ng tag mula sa string nang walang regular expressions!

Sundan kami sa Twitter, o magsubscribe sa NETTUTS RSS Feed para sa mas maraming araw-araw na web development tuts at mga artikulo. At tingnan ang ilan sa mga regex apps na iyon sa Envato Market.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.