JavaRush /Java Blog /Random-TK /RegEx: yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ä...
Artur
Dereje
Tallinn

RegEx: yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim. 1-nji bölüm

Toparda çap edildi
Bu makalanyň asyl nusgasy şu ýerde . Artykmaç teoriýa ýaly bir zat ýok bolsa gerek, we makalanyň ahyrynda regex hakda has jikme-jik materiallara birnäçe baglanyşyk bererin. Regularöne maňa yzygiderli aňlatmalar ýaly bir mowzugy öwrenip başlamak, diňe bir kynçylyk çekmek bilen çäklenmän, ýolda ownuk işleri bitirip derrew bilimleri birleşdirmek mümkinçiligi bar bolsa has gyzykly boljak ýalydy. RegEx: yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim.  1-nji bölümBaşlalyň. Adatça programmirlemekde yzygiderli aňlatmalary ('RegEx' ýa-da ýönekeý 'regex') ulanmaga garşy çykýanlar Jeými Zawinski bilen baglanyşykly aşakdaky sitata salgylanýar: " Käbir adamlar kynçylyk bilen ýüzbe-ýüz bolanda 'Bilýärin, yzygiderli aňlatmalary ulanaryn' diýip pikir edýärler. . "" Indi olaryň iki meselesi bar ". Aslynda yzygiderli aňlatmalary ulanmak entek gowy ýa-da erbet pikir däl. Munuň özi problema goşmaz we olaryň hiç birini çözmez. Bu diňe bir gural. Ony nähili ulanýandygyňyz (dogry ýa-da nädogry) haýsy netijeleri görjekdigiňizi kesgitleýär. Mysal üçin, HTML analizatoryny döretmek üçin regex ulanjak bolsaňyz, agyry duýarsyňyz . Justöne diňe bir hatardan wagt belliklerini çykarmak isleseňiz, gowy bolar. Yzygiderli aňlatmalary özleşdirmegiňizi aňsatlaşdyrmak üçin, ýigrimi gysga ädimde yzygiderli aňlatmalary noldan öwrenmäge kömek etjek bu sapagy bir ýere jemledim. Bu gollanma esasan yzygiderli aňlatmalaryň esasy düşünjelerine ünsi jemleýär we diňe zerur bolanda has ösen mowzuklara girýär.

1-nji ädim: Näme üçin yzygiderli aňlatmalary ulanmaly?

RegEx: yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim.  1-nji bölümYzygiderli aňlatmalar, görkezilen nagyşlary (nagyşlary) ulanyp, tekstdäki gabat gelýänleri gözlemek üçin ulanylýar. Regex ulanyp, tekstden sözleri , şeýle hem aýry-aýry gönümel we meta nyşanlaryny we belli bir kriteriýalara laýyk gelýän yzygiderliligi aňsatlyk bilen we ýönekeý görnüşde çykaryp bileris . Ine, Wikipediýanyň olar hakda bize aýdýanlary : Adaty aňlatmalar, metacharacterleri (ýabany kartoçkalary) ulanmak esasynda tekstdäki substrleri gözlemek we dolandyrmak üçin resmi dil. Gözleg üçin nyşanlardan we metazimbollardan ybarat we gözleg düzgünini kesgitleýän nusga setiri (iňlisçe nagyş, rus dilinde köplenç “şablon”, “maska” diýilýär) ulanylýar. Teksti dolandyrmak üçin ýörite nyşanlary öz içine alyp bilýän çalyşma setiri goşmaça görkezilýär. Nusga dogbu sözlemdäki söz ýaly ýönekeý bolup biler:
Çalt goňur tilki ýalta itiň üstünden bökýär.
Bu yzygiderli aňlatma şuňa meňzeýär:
it
... enougheterlik aňsat, şeýlemi? Bu nagyş, harpy öz içine alýan islendik söz bolup biler o. Şeýle nagşy tapmak üçin yzygiderli aňlatma şeýle bolup biler:
\ w * o \ w *
( Bu yzygiderli aňlatmany şu ýerde synap bilersiňiz .) "Gabat gelýän" talaplaryň has çylşyrymlaşmagy bilen yzygiderli aňlatmagyň hem çylşyrymlaşýandygyny görersiňiz. Belgi toparlaryny kesgitlemek we gaýtalanýan nagyşlar üçin goşmaça bellik görnüşleri bar, aşakda düşündirerin. Someöne, käbir tekstdäki nagyşa gabat gelýän badyna, onuň bilen näme edip bileris? Häzirki zaman yzygiderli aňlatma hereketlendirijileri, tekstden nyşanlary ýa-da nyşanlaryň yzygiderliligini (aşaky bölekleri) çykarmaga ýa-da aýyrmaga ýa-da başga tekst bilen çalyşmaga mümkinçilik berýär. Umuman, teksti derňemek we dolandyrmak üçin yzygiderli aňlatmalar ulanylýar. Mysal üçin, IP adreslerine meňzeýän aşaky bölekleri çykaryp bileris, soň bolsa barlamaga synanyşarys. Ora-da atlary we e-poçta salgylaryny çykaryp, maglumatlar bazasynda saklap bileris. Ora-da e-poçtalarda duýgur maglumatlary (pasport belgileri ýa-da telefon belgileri ýaly) tapmak we ulanyja özlerini howp astynda goýýandyklaryny duýdurmak üçin yzygiderli aňlatmalary ulanyň. Regex hakykatdanam öwrenmek aňsat, ýöne özleşdirmek kyn bolan köpugurly guraldyr: “Bir eseri gowy oýnamak bilen aýdym-saz döretmek arasynda tapawut bolşy ýaly, yzygiderli aňlatmalary bilmek bilen düşünmegiň arasynda tapawut bar.” - Jeffri E. F. Fridl, Adaty aňlatmalary özleşdirmek

2-nji ädim: Kwadrat ýaýlar[]

Düşünmek aňsat bolan iň ýönekeý sözlemler, adaty aňlatma nagşy bilen nyşan setiriniň arasynda simwollara laýyk gelýän gözleýänlerdir. Mysal üçin, pişigi tapmaga synanyşalyň: RegEx: yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim.  1-nji bölüm
nagyş: pişik
setir: Pişik awtoulagyň aşagyna ylganda kesildi.
gabat gelýär:      ^^^
( Iş ýüzünde nähili işleýär - şu ýere serediň ) NB! Solutionshli çözgütler bu ýerde diňe mümkin bolan çözgütler hökmünde hödürlenýär. Umuman programmirleýişdäki ýaly yzygiderli aňlatmalarda şol bir meseleleri dürli usullar bilen çözüp bilersiňiz. Şeýle-de bolsa, häsiýeti boýunça berk deňeşdirmekden başga-da, kwadrat ýaýyň kömegi bilen alternatiw gabat gelýänleri hem kesgitläp bileris:
nagyş: ca [rt]
setir: Pişik awtoulagyň aşagyna ylganda kesildi.
gabat gelýär:      ^^^ ^^^
( Nädip işleýär ) Kwadrat ýaýyň açylmagy we ýapylmagy adaty aňlatma motoryna görkezilen nyşanlaryň haýsydyr birine gabat gelmelidigini, ýöne diňe biriniň bardygyny aýdýar. Aboveokardaky yzygiderli aňlatma, meselem, bütin sözi tapmaz cart, ýöne diňe bir bölegini tapar:
nagyş: ca [rt]
setir: Pişik arabanyň aşagyna ylganda kesildi.
gabat gelýär:      ^^^ ^^^
( Bu nähili işleýär ) Kwadrat ýaýlary ulananyňyzda, adaty aňlatma motoryna ýaýyň içindäki nyşanlaryň diňe birine gabat gelýändigini aýdýarsyňyz. Dwigatel nyşan c, soň nyşan tapýar a, ýöne indiki nyşan bolmasa rýa-da ýok bolsa t, bu doly gabat gelenok. Eger tapsa ca, ýa-da rýa-da bolsa t, saklanýar. Has köp nyşan bilen deňeşdirmäge synanyşmaz, sebäbi kwadrat ýaýlar içindäki nyşanlaryň diňe biriniň gabat gelmelidigini görkezýär. Tapanda , indiki sözde catapylýar we yzygiderlilik üçin eýýäm gabat gelýänligi sebäpli saklanýar . rcartcar

Okuwyň maksatlary:

Localerli şiwede terjime edip bolmaýan punktlaryň böleklerinden had10 nagyşyň hemmesine gabat gelýän yzygiderli aňlatma ýazyň :Had
nagyş:
setir: Biliň "bar" bolan Jiminde " bar " bolan Jim . "Boldy" dogrydy.
gabat gelýär:                  ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^
( Bu ýerde mümkin bolan çözgütlere serediň ) Aşakdaky sözlemdäki haýwanlaryň atlary hakda näme aýdyp bilersiňiz?
nagyş:
setir: Çeňňek, pişik we alaka barda girdi ...
gabat gelýär:    ^^^ ^^^ ^^^
( Mümkin çözgüt ) Ora-da has ýönekeý: sözleri tapyň barýa-da bat:
nagyş:
setir: Çeňňek, pişik we alaka barda girdi ...
gabat gelýär:    ^^^ ^^^
( Mümkin çözgüt ) Indi has çylşyrymly yzygiderli aňlatmalary ýazmagy öwrendik we diňe 2-nji ädimde! Dowam edeliň!

3-nji ädim: yzygiderlilikden gaçmak

RegEx: yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim.  1-nji bölümÖňki ädimde kwadrat ýaýlar []we regex hereketlendirijisini ulanyp, alternatiw gabat gelişleri tapmaga nädip kömek edýändikleri barada öwrendik. Openöne açyk we ýapyk inedördül ýaýlar görnüşinde gabat gelýänleri tapmak islesek näme etmeli []? Sözüň nyşanlaryndan biri-birine gabat gelýänini tapmak islänimizde cat, regex motoryny simwollaryň yzygiderliligi bilen üpjün etdik ( cat). []Kwadrat ýaýlary hem edil şonuň ýaly tapmaga synanyşalyň :
nagyş: [] 
setir: regex ulanyp, [] gabat gelip bilmersiňiz! Puşman bolarsyňyz!
gabat gelýär: 
( Näme bolandygyny göreliň ) Näme-de bolsa bir zat netije bermedi ... Munuň sebäbi kwadrat ýaýyň nyşanlary, adatça başga bir zady görkezmek üçin ulanylýan we özleri bilen deňeşdirmek üçin gönümel nagyş däl ýörite regex hereketlendiriji nyşanlary hökmünde hereket edýär. 2-nji ädimden ýadymyzda bolsa, regex hereketlendirijisi olaryň arasyndaky nyşanlaryň islendik birine gabat geler ýaly alternatiw gabat gelýänleri tapmak üçin ulanylýar. Olaryň arasynda haýsydyr bir nyşan goýmasaňyz, ýalňyşlyk döredip biler. Bu aýratyn nyşanlara gabat gelmek üçin, yzky yza gaýtmak häsiýeti bilen olardan öňürti gaçmalydyrys \. “Backslash” (ýa-da “backslash”) regex motoryna indiki nyşanlary metacharacter hökmünde ulanman, göni manyda gözlemegi tabşyrýan başga bir aýratyn nyşan. “Regex” hereketlendirijisi diňe simwollary gözlär [we sözüň ]doly manysynda ikisindenem öňe geçse:
nagyş: \ [\]
setir: regex ulanyp [] gabat gelip bilmersiňiz! Puşman bolarsyňyz!
gabat gelýär:                  ^^ 
( Geliň, bu gezek näme bolandygyny göreliň ) Bolýar, yza gaýdyşyň özüni tapmak islesek näme etmeli? Jogap ýönekeý. Yza gaýtmak hem aýratyn bir häsiýet bolany üçin \, ondan hem gaçmaly. Nädip? Yzyna!
nagyş: \\
setir: C: \ Ulanyjylar \ Tanja \ Suratlar \ Itler
gabat gelýär:    ^ ^ ^ ^
( Iş ýüzünde şol bir mysal ) Diňe ýörite nyşanlardan yza çekilmeli. Beýleki nyşanlaryň hemmesi sözme-söz manyda düşündirilýär. Mysal üçin, adaty aňlatma tgöni manyda diňe tkiçi harplara gabat gelýär:
nagyş: t
setir: tttt
gabat gelýär: ^ ^ ^ ^
( Mysal ) Şeýle-de bolsa, bu yzygiderlilik \tbaşgaça işleýär. Salgy belgisini gözlemek üçin şablon:
nagyş: \ t
setir: tttt
gabat gelýär:   ^ ^ ^
( Mysal ) Käbir umumy gaçmak yzygiderliligi \n(UNIX stilindäki setir arakesmeleri) we \r(Windows stilindäki arakesmelerde ulanylýar \r\n). \r"wagonyň gaýdyp gelmegi" nyşanydyr we \n"setir iýmiti" häsiýetidir, ikisem tele ýazyjylar henizem giňden ulanylanda ASCII standarty bilen bilelikde kesgitlenendir. Beýleki umumy gaçmak yzygiderliligi bu gollanmada soňrak görkeziler.

Şol wagt, geliň, materialy iki sany ýönekeý bulgur bilen güýçlendireliň:

Tapmak üçin yzygiderli aňlatma ýazyp görüň ... yzygiderli aňlatma;) Netije şeýle bolmaly:
nagyş:
setir: ... bu regex ` \ [\] ` regex bilen gabat gelýärmi?
gabat gelýär:                       ^^^^	
( Çözgüt ) Dolandyrdyňyzmy? Berekella! Indi şuňa meňzeş gaçmak yzygiderliligini gözlemek üçin regex döretmäge synanyşyň:
nagyş:
setir: " \ r ", " \ t " we " \ n " hemmesi regex gaçmagyň yzygiderliligi.
gabat gelýär:   ^^ ^^ ^^
( Çözgüt )

4-nji ädim: nokat ulanyp "islendik" nyşan gözläň.

RegEx: yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim.  1-nji bölümÖňki ädimde gören gaçmak yzygiderliligine gabat gelýän çözgütler ýazylanda, "Yza gaýdyş belgisini, soň bolsa başga bir nyşan bilen deňeşdirip bilerinmi?" Diýip pikir eden bolmagyňyz mümkin ... Elbetde edip bilersiňiz! Islendik bir nyşan (nokat) (doly duralga) nyşanyna gabat gelmek üçin ulanylýan başga bir aýratyn nyşan bar. Ine, näme edýär:
nagyş : .
setir: Bagyşlaň, Deýw. Men muny edip bilmerin öýdüp gorkýaryn.
gabat gelýänler: ^^^^^^^^^^^^^^^	
( Mysal ) Diňe gaçmagyň yzygiderliligine meňzeýän nagyşlara gabat gelmek isleseňiz, şuňa meňzeş bir zat edip bilersiňiz:
nagyş: \\. 
setir: Salam Walmart meniň agtygym, ol ýerde " \ n \ r \ t ".
gabat gelýär:                                              ^^ ^^ ^^	
( Mysal ) specialhli aýratyn belgilerdäki ýaly, göçme manyda gabat gelmek isleseňiz ., ondan öň bir belgi bilen başlamaly \:
nagyş: \. 
setir: Uruş parahatçylyk . Erkinlik gulçulykdyr . Jahyllyk güýçdir . 
gabat gelýär:             ^ ^ ^
( Mysal )

5-nji ädim: Nyşanlaryň çäkleri

RegEx: yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim.  1-nji bölümHaýsydyr bir nyşan gerek däl, diňe tekstde harp tapmak isleseňiz näme etmeli? Numbersa-da sanlar? Ora-da çekimli sesler? Nyşan synplary we olaryň aralyklary boýunça gözlemek bize ýetmäge mümkinçilik berer.
" \ n ", " \ r " we " \ t " giňişlik nyşanlarydyr \ " . `,` \\ `we` \ [ ` däl .	
Nyşanlar , tekstde görünýän bellik döretmese, "giňişlik" . Boşluk " " boşluk, setir arakesmesi ýa-da goýma. \nDiňe giňişlikdäki nyşanlary aňladýan gaçmak yzygiderliligini we ýokardaky bölümde tapmak isleýäris , \rýöne beýleki gaçmak yzygiderliligini däl. \tMuny nädip edip bileris?
nagyş: \\ [nrt] 
setir: " \ n ", " \ r " we " \ t " giňişlik nyşanlarydyr \ " . `,` \\ `we` \ [ ` däl .
gabat gelýär:   ^^ ^^ ^^	
( Mysal ) Bu işleýär, ýöne gaty bir çözgüt däl. Soňra "forma iýmiti" nyşany üçin gaçmagyň yzygiderliligini deňeşdirmeli bolsa näme etmeli \f? (Bu nyşan, tekstdäki sahypa böleklerini görkezmek üçin ulanylýar.)
nagyş: \\ [nrt] 
setir: " \ n ", " \ r ", " \ t " we " \ f " giňişlik nyşanlarydyr \ " . `,` \\ `we` \ [ ` däl .
gabat gelýär:   ^^ ^^ ^^	
( Işlemeýän çözgüt däl ) Bu çemeleşme bilen, gabat gelmek isleýän her kiçi harpymyzy inedördül ýaýlarda aýratyn sanamaly. Muny etmegiň has aňsat usuly, kiçi harplara gabat gelmek üçin nyşanlaryň diapazonlaryny ulanmakdyr:
nagyş: \\ [az] 
setir: " \ n ", " \ r ", " \ t " we " \ f " giňişlik nyşanlarydyr, \ . `,` \\ `we` \ [ ` däl .
gabat gelýär:   ^^ ^^ ^^ ^^	
( We bu eýýäm işleýär ) aboveokardaky mysaly göz öňünde tutup, nyşanlaryň diapazony garaşyşyňyz ýaly işleýär. Gabat gelmek isleýän birinji we soňky harplaryňyzyň töwereginde kwadrat ýaýlary ýerleşdiriň, arasynda defis bar. \Mysal üçin, diňe yza gaýdyşyň "toplumyny" we ondan bir harp atapmak isleseňiz m, aşakdakylary edip bilersiňiz:
nagyş: \\ [am] 
setir: " \ n ", " \ r ", " \ t " we " \ f " giňişlik nyşanlarydyr, \ . `,` \\ `we` \ [ ` däl .
gabat gelýär:                         ^^	
( Mysal ) Birnäçe diapazona gabat gelmek isleseňiz, olary inedördül ýaýyň arasynda goýuň:
nagyş: \\ [a-gq-z] 
setir: " \ n ", " \ r ", " \ t " we " \ f " giňişlik nyşanlarydyr , \. `,` \\ `we` \ [ ` däl .
gabat gelýär:         ^^ ^^ ^^	
( Mysal ) Beýleki umumy nyşanlaryň arasynda: A-Zwe0-9

Olary iş ýüzünde synap göreliň we birnäçe meseläni çözeliň:

0-9Alty sanly sanlar sanlary we harplary öz içine alyp biler A-F. Reňkleri kesgitlemek üçin ulanylanda, alty sanly kodlar iň köp üç simwoly öz içine alyp biler. Aşakdaky sanawda dogry alty sanly kodlary tapmak üçin yzygiderli aňlatma dörediň:
nagyş:
setir: 1H8 4E2 8FF 0P1 T8B 776 42B G12
gabat gelýär:      ^^^ ^^^ ^^^ ^^^	
( Çözgüty ) Nyşan diapazonlaryny ulanyp, aşakdaky sözlemde diňe kiçi harplary (sesleri däl, şol sanda) saýlaýan yzygiderli aňlatma dörediň :
nagyş:setir 
: T h e w a ll a l a l a l a l a l a l a l a l a _ _ _ _ _ 
gabat gelýär:   ^ ^ ^^^ ^ ^^ ^ ^^ ^ ^ ^ ^^^ ^ ^ ^^^ ^ ^^	
( Çözgüt )

6-njy ädim: "däl", caret, sirkfleks, caret ... nyşany^

RegEx: yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim.  1-7-nji bölümHakykatdanam, bu nyşan üçin 9000-den gowrak at bar :), öne, ýönekeýlik üçin, belki "ýok" -a üns bereris. Soňky meseläni çözmegim biraz uzyn. "Seslerden başga ähli elipbiýi alyň" diýmek üçin 17 simwol gerekdi. Elbetde muny etmegiň has aňsat usuly bar. "Notok" belgisi , nagyşda görkezilenlere gabat gelmeýän^ nyşanlary we diapazonlary kesgitlemäge mümkinçilik berýär . Aboveokardaky soňky meseläniň has ýönekeý çözgüdi, sesleri aňlatmaýan nyşanlary tapmakdyr:
nagyş : [ ^ aeiou] setir : 
e   l a l a l a l a l a l a l a l a l a l a l a 
gabat gelýär: ^^ ^^ ^^^^ ^^^^ ^^ ^^^ ^ ^^ ^ ^^^^^^ 	
( Mysal^ ) Kwadrat ýaýyň içindäki iň çep nyşan hökmünde "däl" belgisi, []adaty aňlatma motoryna kwadrat ýaýyň içinde bolmadyk bir (islendik) nyşan bilen gabat gelmegini aýdýar. Diýmek, ýokardaky yzygiderli aňlatma sözlemiň başyndaky ähli boşluklara, döwre ., vergul ,we baş harplara laýyk gelýär. TOlary aýyrmak üçin olary inedördül ýaýlara hem goýup bileris:
nagyş : [ ^ aeiou . , T ] setir  
: T h e w a ll a r e t o ally , t o lly t a ll . _ 
gabat gelýär:   ^ ^ ^^^ ^ ^^ ^ ^^ ^ ^ ^ ^^^ ^ ^ ^^^ ^ ^^	
( Mysal ) bellikbu ýagdaýda, kwadrat ýaýdan peýdalanman gözlänimizde öňküsi ýaly yza gaýdyp, döwürden gaçmagyň zerurlygy ýok. Kwadrat ýaýyň içindäki köp sanly nyşanlara göni manyda seredilýär, şol sanda açyk [- ýöne ýapylmaýan - ]ýaýyň nyşany (munuň sebäbini çaklap bilersiňizmi?). Yza çekilen nyşan \hem göni manyda düşündirilmeýär. Kwadrat ýaýyň kömegi bilen göçme manyda arkaýyn gabat gelmek isleseňiz \, aşakdaky yzky çyzgy bilen öňünden gutulmaly \\. Bu özüňi alyp barmak, giňişlikdäki nyşanlary deňeşdirmek üçin inedördül ýaýlara ýerleşdirmek üçin döredildi:
nagyş: [\ t]
setir: tttt
gabat gelýär:   ^ ^ ^
( Mysal ) "notok" belgisini ^diapazonlar bilen hem ulanyp bolýar. Diňe simwollary almak isleýän bolsam ,, awe , we şuňa meňzeş bir zat edip bilerdim: bcxyz
nagyş: [abcxyz] 
setir:   abc defghijklmnopqrstuvw xyz 
gabat gelýär: ^^^ ^^^
( Mysal ) ... ýa-da, arasynda bolmadykd we haýsydyr bir nyşan tapmak isleýändigimi görkezip bilerin w.
nagyş: [^ dw] 
setir:   abc defghijklmnopqrstuvw xyz 
gabat gelýär: ^^^ ^^^
( Mysal ) Şeýle-de bolsa,seresap boluň^bilen " däl " bilen "Gowy" pikir etmek aňsat, men kesgitledim , şonuň üçin kiçi harp ýa-da soň bir zat [^ b-f]almaly . Bu beýle däl. Bu regex harplar, sanlar, dyngy belgileri we boşluklar ýaly aralykdaky islendik nyşan bilen gabat geler. af
nagyş: [^ dw] 
setir:   abc defg h . i , j - klmnopqrstuvw xyz 
gabat gelýär: ^^^ ^ ^ ^ ^ ^^^
( Mysal )

Işleriň derejesini ýokarlandyrmak:

Kwadrat ýaýyň içindäki "ýok" belgisini ^aşakdaky sözlere gabat gelmek üçin ulanyň y:
nagyş:
setir: gündelik it doňuz oty bog aýlagy bilen gabat 
gelýär:      ^^^ ^^^ ^^^ ^^^	
( Çözgüt^ ) 1977-nji we 1982-nji ýyllar aralygyndaky ähli ýyllary tapmak üçin diapazony we "däl" belgisini ulanyp yzygiderli aňlatma ýazyň :
nagyş:
setir: 1975 1976 1977 1978 1979 1980 1980 1982 1982 1983 1984
gabat gelýär:            ^^^^ ^^^^ ^^^^ ^^^^ ^^^^
( Çözgüt ) "" "belgisi däl nyşanlaryň hemmesini tapmak üçin yzygiderli aňlatma ýazyň ^:
nagyş:
setir:   abc1 ^ 23 * () 
gabat gelýär: ^^^^ ^^^^^	
( Çözgüt )

7-nji ädim: Nyşan sapaklary

Nyşan synplary hatda hatar aralygyndan has ýönekeýdir. Dürli yzygiderli aňlatma dwigatellerinde dürli synplar bar, şonuň üçin diňe şu ýerde esasylaryny ýapjak. .
Synp nyşanlary
\d "sanlar"[0-9]
\w "söz nyşanlary"[A-Za-z0-9_]
\s "boşluklar"[ \t\r\n\f]
"Söz" nyşan synpy \wesasanam peýdalydyr, sebäbi bu nyşan toplumy köplenç dürli programmirleme dillerinde dogry kesgitleýjiler (üýtgeýän atlar, funksiýa atlary we ş.m.) üçin talap edilýär. \wÖň gören adaty aňlatmalarymyzy aňsatlaşdyrmak üçin ulanyp bileris :
nagyş: \\ [az] 
setir: " \ n ", " \ r ", " \ t " we " \ f " giňişlik nyşanlarydyr, \ . `,` \\ `we` \ [ ` däl .
gabat gelýär:   ^^ ^^ ^^ ^^	
Ulanyp, \wşeýle ýazyp bileris:
nagyş: \\\ w 
setir: " \ n ", " \ r ", " \ t " we " \ f " giňişlik nyşanlarydyr, \ . `,` \\ `we` \ [ ` däl .
gabat gelýär:   ^^ ^^ ^^ ^^	
( Mysal )

Bagt üçin 2 wezipe:

Siziň we meniň bilşimiz ýaly, Java-da kesgitleýji (üýtgeýäniň ady, synpyň, funksiýanyň we ş.m.) diňe harp bilen a- zA- Z, dollar belgisi $ýa-da aşaky çyzyk bilen başlap biler _. ( aşagy çyzmak, elbetde, erbet stil, ýöne düzüji ony geçirýär, terjimeçiniň belligi ). Galan nyşanlar "söz" nyşanlary bolmaly \w. Bir ýa-da birnäçe nyşan synpyny ulanyp, aşakdaky üç simwol yzygiderliliginiň arasynda dogry Java kesgitleýjilerini gözlemek üçin yzygiderli aňlatma dörediň:
nagyş:
setir:   __e 12 $ .x2 foo Bar 3mm
gabat gelýär: ^^^ ^^^ ^^^ ^^^	
( Çözgüt ) ABŞ-nyň Sosial üpjünçilik belgileri (SSN) XXX-XX-XXXX formatda 9 sanly san bolup, her X islendik san bolup biler [0-9]. Bir ýa-da birnäçe nyşan synpyny ulanyp, aşakdaky sanawda dogry formatlanan SSN-leri tapmak üçin yzygiderli aňlatma ýazyň:
nagyş:
setir: 113-25 = 1902 182-82-0192 H23-_3-9982 1I1-O0-E38B
gabat gelýär:              ^^^^^^^^^^^
( Çözgüt ) RegEx: yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim. Bölüm 2. Yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim. Bölüm 3. RegEx: yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim. 4-nji bölüm.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION