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. 3-nji bölüm

Toparda çap edildi
RegEx: yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim. Bölüm 1. RegEx: yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim. 2-nji bölüm: Bu bölümde birneme çylşyrymly zatlara geçeris. Emma olary öňküsi ýaly özleşdirmek kyn bolmaz. RegEx-iň başda görünişinden has aňsatdygyny gaýtalaýaryn, ony özleşdirmek we iş ýüzünde ulanyp başlamak üçin raketa alymy bolmak hökman däl. Bu makalanyň iňlis dilindäki asyl nusgasy şu ýerde . Yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim.  3-nji bölüm

11-nji ädim: ()Toparlary ele almak ýaly ene-atalar

Yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim.  3-nji bölümIň soňky meselede, bitewi bahalaryň dürli görnüşlerini we ýüzýän nokady (nokat) san bahalaryny gözledik. Emma yzygiderli aňlatma hereketlendirijisi bu iki görnüşiň arasynda tapawutlandyrmady, sebäbi hemme zat bir uly yzygiderli aňlatmada ele alyndy. Mini nagyşlarymyzy gabygyň içine salsak, dürli görnüşli gabat gelýänleri tapawutlandyrmagy adaty aňlatma motoryna aýdyp bileris:
nagyş: ([AZ]) | ([az]) 
setir:   Boliwiýanyň häzirki prezidenti Ewo Morales .
gabat gelýänler    
: ^^^ ^^^^^^^ ^^^^^^^ ^^ ^^^^^^^^ 122 1222222  
. _ _ |“Ora-da” belgisini we gabygyny ele alýan topar hökmünde ulanyp (), birnäçe setirlere gabat gelýän ýeke-täk yzygiderli aňlatmany kesgitläp bileris. Muny makalanyň öňki böleginden uzyn / ýüzýän gözleg regeximize ulansak, regex hereketlendirijisi degişli toparlarda degişli gabat gelýänleri alar. Substringiň haýsy topara gabat gelýändigini barlamak bilen, ýüzýän bahanyň ýa-da uzyn bahanyň bardygyny derrew kesgitläp bileris:
nagyş: (\ d * \. \ d + [fF] | \ d + \. \ d * [fF] | \ d + [fF]) | (\ d + [lL]) 
setir:   42L 12 x 3.4f 6l 3.3 0F LF .2F 0.
gabat gelýär: ^^^ ^^^^ ^^ ^^ ^^^ 
topar:    222 1111 22 11 111  
( Mysal ) Bu yzygiderli aňlatma gaty çylşyrymly we has gowy düşünmek üçin, geliň, bu nagyşlaryň hersine seredeliň:
(// islendik "ýüzýän" substringe gabat gelýär
  \ d * \. \ d + [fF]
  |
  \ d + \. \ d * [fF]
  |
  \ d + [fF]
)
| // ORA-DA
(// islendik "uzyn" substringe gabat gelýär
  \ d + [lL]
)
|Gaplaňdaky bellik we surata düşüriş toparlary, ()dürli substrings bilen deňeşdirmäge mümkinçilik berýär. Bu ýagdaýda ýüzýän nokat sanlaryny "ýüzýän" ýa-da "uzyn" bitewi sanlar bilen deňeşdirýäris.
(
  \ d * \. \ d + [fF] // onluk nokadyň sag tarapynda 1+ san
  |
  \ d + \. \ d * [fF] // onluk nokadyň çep tarapynda 1+ san
  |
  \ d + [fF] // nokat ýok, diňe 1+ san
)
|
(
  \ d + [lL] // nokat ýok, diňe 1+ san
)
"Atüzýän" surata düşüriş toparynda bizde üç wariant bar: onluk nokadyň sag tarapynda azyndan 1 sanly sanlar, onluk nokadyň çep tarapynda azyndan 1 sanly sanlar we onluk nokady bolmadyk sanlar. Olaryň haýsydyr biriniň soňuna goşulan "f" ýa-da "F" harplary bar bolsa "ýüzýär". "Uzyn" surata düşüriş toparynyň içinde diňe bir mümkinçiligimiz bar - 1 ýa-da has köp san bolmaly, ondan soň "l" ýa-da "L" nyşanlary bolmaly. Adaty aňlatma hereketlendirijisi, bu setirleri belli bir setirde gözlär we degişli surata düşürmek toparyna görkezer. bellikolara goşulan "l", "L", "f" ýa-da "F" sanlary ýok. Bu sanlary nädip toparlara bölmeli? Dogrusy, onluk nokady bar bolsa, Java dili "iki esse" ýerine ýetirilýär. Otherwiseogsam olar "int" bolmaly.

Öwrenen zatlarymyzy iki sany bulgur bilen jemläliň:

Aboveokardaky regex-ä ýene iki sany topar goşuň, şonuň üçin goşa ýa-da int sanlary hem toparlara bölýär. (Bu başga bir kyn sorag, biraz wagt gerek bolsa ruhdan düşmäň, iň soňky çözgüt hökmünde meniň çözgütime serediň.)
nagyş:
setir:   42L 12 x 3.4f 6l 3.3 0F LF .2F 0. 
gabat gelýär: ^^^ ^^ ^^^^ ^^ ^^^ ^^ ^^^ ^^ 
topar:    333 44 1111 33 222 11 111 22
( Çözgüt ) Indiki mesele birneme ýönekeý. Aşakdaky ýaşlary tertiplemek üçin ýaýly tutma toparlaryny (), 'ýa-da' belgisini |we nyşanlaryny ulanyň: "ABŞ-da içmek kanuny". (> = 21) we "ABŞ-da içmäge rugsat berilmeýär" (<21):
nagyş:
setir:   7 10 17 18 19 20 21 22 23 24 30 40 100 120 
oýun: ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ 
topar:    2 22 22 22 22 22 11 11 11 11 11 111 111 
( Çözgüt )

12-nji ädim: Ilki bilen has anyk oýunlary kesgitläň

Yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim.  3-nji bölüm"Kanuny içgileri" ikinjisini däl-de, birinji tutýan topar hökmünde kesgitlemäge synanyşsaňyz, soňky meselede birneme kynçylyk çeken bolmagyňyz mümkin. Munuň sebäbine düşünmek üçin başga bir meselä seredeliň. 4 simwoldan az bolan familiýalary we 4 ýa-da has köp simwoly öz içine alýan familiýalary aýratyn ýazmak isleýäris diýeliň. Ilkinji surata düşüriş toparyna has gysga at bereliň we nämeleriň bolýandygyny göreliň:
nagyş: ( [ AZ ] [az] ? [ az ] ? ) 
|  
gabat gelýär: ^^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^^ 
topar:    111 111 11 111 111 111 111   
( Mysal ) Düzgüne görä, yzygiderli aňlatma hereketlendirijileriniň köpüsi şu wagta çenli gören esasy gahrymanlarymyza açgöz gabat gelýär. Bu, adaty aňlatma hereketlendirijisiniň berlen yzygiderli aňlatmada mümkin boldugyça ir kesgitlenen iň uzyn topary aljakdygyny aňladýar. Şeýlelik bilen ýokardaky ikinji topar, mysal üçin "Jobs" we "Kloýd" ýaly atlarda has köp nyşan alyp bilse-de, şol atlaryň ilkinji üç simwoly eýýäm birinji topar tarapyndan ele alnandygy sebäpli, ikinjisi bilen olary tutup bolmaz. . Indi azajyk düzediş edeliň - has anyk (has uzyn) toparyny ilki bilen ýerleşdirmek toparlarynyň tertibini üýtgediň:
nagyş: ([AZ] [az] [az] [az] +) | ([AZ] [az]? [az]?) 
setir:   Kim Jobs Su Kloýd Mohr Ngo Rok .
gabat gelýänler: ^^^ ^^^^ ^^ ^^^^^ ^^^^ ^^^^ 
topar:    222 1111 22 11111 1111 222 1111    
( Mysal )

Wezipe ... bu gezek diňe bir :)

"Has anyk" nagyş hemişe diýen ýaly "uzyn" diýmekdir. Iki görnüşli "söz" tapmak isleýändigimizi aýdalyň: ilki çekimli seslerden (has takygy), soň bolsa çekimli seslerden başlamaýanlar (başga söz). Bu iki topara gabat gelýän setirleri düşürmek we kesgitlemek üçin yzygiderli aňlatma ýazyp görüň. (Aşakdaky toparlar san däl-de, harp bilen ýazylýar. Haýsy toparyň birinjisine, haýsysynyň ikinjisine gabat gelmelidigini kesgitlemeli.)
nagyş:
setir:   pds6f uub 24r2gp ewqrty l ui_op 
gabat gelýär: ^^^^^ ^^^ ^^^^^^ ^^^^^^ ^ ^^^^^ 
topar:    NNNNN VVV NNNNNN VVVVVV N VVVVV
( Çözgüt ) Umuman aýdanyňda, yzygiderli aňlatmagyňyz näçe takyk bolsa, şonça-da gutarýar. Näçe takyk bolsa, size gerek däl zady ele almak ähtimallygy azdyr. Şonuň üçin gorkunç görünse-de, has uzyn regexler ~ = has gowy regexler. Gynansagam .

{}13-nji ädim: Belli bir gezek gaýtalamak üçin egri ýaýlar

Yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim.  3-nji bölümÖňki ädimdäki familiýalar bilen mysalda, bir nagyşda takmynan 2 gaýtalanýan topar bardy:
nagyş: ([AZ] [az] [az] [az] +) | ([AZ] [az]? [az]?) 
setir:   Kim Jobs Su Kloýd Mohr Ngo Rok .
gabat gelýänler: ^^^ ^^^^ ^^ ^^^^^ ^^^^ ^^^^ 
topar:    222 1111 22 11111 1111 222 1111    
Birinji topar üçin dört ýa-da has köp harp bilen familiýa gerekdi. Ikinji topar üç ýa-da has az harp bilen familiýalary ele almalydy. [a-z]Muny ýazmagyň bu toparlary gaýta-gaýta gaýtalamakdan has aňsat usuly barmy ? Munuň üçin egrilen ýaýlary ulansaňyz bar {}. Egri ýaýlar, {}öňki nyşanlaryň ýa-da surata düşüriş toparynyň iň az we (islege görä) iň köp sanyny kesgitlemäge mümkinçilik berýär. Üç ulanylyş ýagdaýy bar {}:
{X} // takyk X gezek gabat gelýär
{X,} // gabat gelýär> = X gezek
{X, Y} // gabat gelýär> = X we <= Y gezek
Ine, bu üç dürli sintaksisiň mysallary:
nagyş: [az] {11} 
setir:   humuhumunuk unukuapua'a.
gabat gelýär: ^^^^^^^^^^^   
( Mysal )
nagyş: [az] {18,} 
setir:   humuhumunukunukuapua 'a.
gabat gelýär: ^^^^^^^^^^^^^    
( Mysal )
nagyş: [az] {11,18} 
setir:   humuhumunukunukuap ua'a.
gabat gelýär: ^^^^^^^^^^^^^^    
( Mysal ) aboveokardaky mysallarda bellemeli birnäçe nokat bar.bellik:. Ilki bilen, {X} belligini ulanyp, öňki nyşan ýa-da topar şol san (X) gezek gabat gelýär. "Sözde" (X belgiden has köp) nagyş bilen gabat gelýän nyşanlar bar bolsa (birinji mysalda görkezilişi ýaly), onda olar oýna goşulmaz. Nyşanlaryň sany X-dan az bolsa, onda doly oýun şowsuz bolar (birinji mysalda 11-den 99-a üýtgedip görüň). Ikinjiden, {X,} we {X, Y not düşünjeleri açgöz. Berlen yzygiderli aňlatmany kanagatlandyrmak bilen bir hatarda mümkin boldugyça köp nyşan bilen deňeşdirmäge synanyşarlar. {3,7} görkezseňiz, 3-7 simwol gabat gelip biler we indiki 7 simwol dogry bolsa, 7 simwolyň hemmesi gabat geler. {1,} görkezseňiz we indiki 14,000 simwolyň hemmesi gabat gelýän bolsa, şol nyşanlaryň 14,000-i degişli setire goşular. Knowledgeokardaky aňlatmalarymyzy täzeden ýazmak üçin bu bilimleri nädip ulanyp bileris? Iň ýönekeý gowulaşma , N şoňa görä saýlanan goňşy toparlary [a-z]çalyşmak bolup biler :[a-z]{N}
nagyş: ([AZ] [az] {2} [az] +) | ([AZ] [az]? [az]?)  
... ýöne bu zatlary kän bir gowulaşdyrmaýar. Ilkinji surata düşüriş toparyna serediň: bizde [a-z]{2}(takmynan 2 kiçi harp bilen gabat gelýär), yzyndan [a-z]+(1 ýa-da has kiçi harp bilen gabat gelýär) bar. Muny egriji ýaýlar bilen 3 ýa-da has kiçi harp sorap, aňsatlaşdyryp bileris:
nagyş: ([AZ] [az] {3,}) | ([AZ] [az]? [az]?) 
Ikinji tutmak topary başga. Bize bu familiýalarda üç simwoldan köp bolmaly däl, bu biziň ýokary çägimiziň bardygyny aňladýar, emma aşaky çäkimiz nol:
nagyş: ([AZ] [az] {3,}) | ([AZ] [az] {0,2}) 
Aýratynlyklar yzygiderli aňlatmalar ulanylanda has gowudyr, şonuň üçin şol ýerde durmak akylly bolardy, ýöne biri-biriniň gapdalyndaky bu iki simwol aralygynyň ( [AZ]we ) "söz belgisi" synpyna meňzeýändigini, ( ) . Maglumatlarymyzda diňe gowy formatlanan familiýalaryň bardygyna ynanýan bolsak, adaty aňlatmalarymyzy ýönekeýleşdirip, ýönekeý ýazyp bilerdik: [az]\w[A-Za-z0-9_]
nagyş: (\ w {4,}) | (\ w {1,3}) 
Birinji topar 4 ýa-da has köp "söz nyşanlary" () yzygiderliligini alýar [A-Za-z0-9_], ikinji topar 1-den 3-e çenli "söz nyşanlary" (şol sanda) yzygiderliligini alýar. Bu işlärmi?
nagyş: (\ w {4,}) | (\ w {1,3}) 
setir:   Kim Jobs Su Kloýd Mohr Ngo Rok .
gabat gelýänler: ^^^ ^^^^ ^^ ^^^^^ ^^^^ ^^^^ 
topar:    222 1111 22 11111 1111 222 1111    
( Mysal ) Işledi! Bu çemeleşme nähili? Öňki mysalymyzdan has arassa. Birinji surata düşüriş topary dört ýa-da has köp simwol bilen ähli familiýa gabat gelýändigi sebäpli, ikinji surata düşüriş toparyny ýönekeý görnüşde üýtgedip bileris \w+, sebäbi bu galan familiýalary (1, 2 ýa-da 3 simwol bilen) ele almaga mümkinçilik berer:
nagyş: (\ w {4,}) | (\ w +) 
setir:   Kim Jobs Su Kloýd Mohr Ngo Rok .
gabat gelýänler: ^^^ ^^^^ ^^ ^^^^^ ^^^^ ^^^^ 
topar:    222 1111 22 11111 1111 222 1111    
( Mysal )

Geliň beýnini öwrenmäge we aşakdaky 2 meseläni çözmäge kömek edeliň:

{}Sosial üpjünçilik belgisini gözlemek 7-nji ädimden yzygiderli aňlatmak üçin egri ýaýlary ulanyň :
nagyş:
setir: 113-25 = 1902 182-82-0192 H23-_3-9982 1I1-O0-E38B
gabat gelýär:              ^^^^^^^^^^^
( Çözgüt ) Web sahypasynyň parol berkligini barlaýjy, ulanyjy parollarynyň 6 bilen 12 simwol aralygynda bolmagyny talap edýär. Aşakdaky sanawda nädogry parollary görkezýän yzygiderli aňlatma ýazyň . Her parol aňsat gabat gelmek üçin gabygyň içinde bolýar (), şonuň üçin yzygiderli aňlatmanyň sözme-söz (we )simwoliki nyşanlardan başlanýandygyna we gutarýandygyna göz ýetiriň. Maslahat: parollardaky [^()]ýa-da şuňa meňzeş parollarda gönümel gabygyň gadagan edilýändigine göz ýetiriň, ýogsam tutuş setire gabat gelersiňiz!
nagyş:
setir:   (12345) (parolym) (Xanadu.2112) (su_do) (OfSalesmen!)
gabat gelýär: ^^^^^^^ ^^^^^^^  
( Çözgüt )

14-nji ädim: \bNol giňlik serhet nyşany

Yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim.  3-nji bölümIň soňky wezipe gaty kyn boldy. ""Paröne parollary dyrnagyň ýerine sitata goşmak bilen birneme çylşyrymlaşdyrsak näme ()? Parenthli gabygyň nyşanlaryny sitata nyşanlary bilen çalşyp, şuňa meňzeş çözgüt ýazyp bilerismi?
nagyş: \ "[^"] {0.5} \ "| \" [^ "] + \ s [^"] * \ " 
setir:   " 12345 "" parolym " " Xanadu.2112 "" su_do "" OfSalesmen! "
gabat gelýär: ^^^^^^^ ^^^^^^^^^^^  
( Mysal ) Gaty täsirli bolmady. Munuň sebäbini eýýäm çakladyňyzmy? Mesele bu ýerde nädogry parol gözleýäris. "Xanadu.2112" gowy parol, şonuň üçin regex bu yzygiderliligiň boşluklary ýa-da gönümel nyşanlaryň ýokdugyna göz ýetirende , sag tarapdaky paroly kesgitleýän "simwoldan öň çykýar . ". "_ [^"]_ "_ Xanadu.2112 "sagda. Şol ýerden bir kosmos nyşany, başga bir nyşan görýär "- onuň üçin bu nädogry parol! Esasan bu yzygiderliligi tapýar " "we dowam edýär. Bu asla almak isleýän zadymyz däl ... Parolyň birinji harpynyň boş ýer bolmaly däldigini kesgitläp bilsek gowy bolardy . Muny etmegiň ýoly barmy? (Şu wagta çenli, meniň ähli ritoriki soraglarymyň jogabynyň "hawa" diýip düşünen bolsaňyz gerek.) Hawa! Şeýle ýol bar! Köp yzygiderli aňlatma hereketlendirijileri "söz araçägi" ýaly gaçmagyň yzygiderliligini üpjün edýär \b. "Söz araçägi" \b, sözüň araçägine gabat gelýän nol ini gaçmak yzygiderliligi. "Söz" diýlende, synpdaky nyşanlaryň yzygiderliligini \wýa-da aňladýandygyny ýadyňyzdan çykarmaň [A-Za-z0-9_]. Söz araçägi gabat gelmegi, yzygiderliligiň öňünden ýa-da derrew söz nyşany \bbolmalydygyny aňladýar. неŞeýle-de bolsa, gabat gelende, bu gahrymany surata düşürilen substringimize goşmaýarys. Bu nol ini. Munuň nähili işleýändigini görmek üçin kiçijik bir meselä seredeliň:
nagyş: \ b [^] + \ b 
setir   : Lebowski .
gabat gelýär: ^^ ^^^^^ ^^^^ ^^ ^^^^^ ^^^^^^^^  
( Mysal ) Yzygiderlilik sözüň [^ ]doly manysynda kosmos nyşany bolmadyk islendik nyşan bilen gabat gelmelidir. ,Onda näme üçin bu puldan soň vergi ýa-da "Lebowskiden soňky döwür" bilen gabat gelmeýär .? Sebäbi vergul ,we döwür .söz nyşanlary däl, şonuň üçin söz nyşanlary bilen söz däl nyşanlaryň arasynda araçäkler döredilýär y. pul sözi we ,yzyndaky vergi . we " iLebowski sözi bilen .ondan soňky döwür (doly duralga / döwür) arasynda. Yzygiderli aňlatma bu sözleriň çäklerine gabat gelýär (ýöne olary kesgitlemäge kömek edýän söz däl nyşanlarda däl). \bEmma şablonymyza yzygiderliligi goşmasak näme bolýar ?
nagyş: [^] + 
setir:   Lebowski. 
gabat gelýär: ^^ ^^^^^ ^^^^ ^^ ^^^^^^  
( Mysal ) Hawa, indi bu dyngy belgilerini hem tapýarys. Indi getirilen parollar üçin regex düzeltmek üçin söz araçäklerini ulanalyň:
nagyş: \ "\ b [^"] {0.5} \ b \ "| \" \ b [^ "] + \ s [^"] * \ b \ " 
setir:   " 12345 "" parolym " " Xanadu. 2112 " " su_do " " OfSalesmen! "
gabat gelýär: ^^^^^^^ ^^^^^^^  
. _ _ Şonuň üçin bu ýerde gowy işleýär, ýöne ulanyjynyň parolynyň birinji ýa-da soňky harpy söz belgisi bolmasa, işlemez:
nagyş: \ "\ b [^"] {0.5} \ b \ "| \" \ b [^ "] + \ s [^"] * \ b \ "
setir: "thefollowingpasswordistooshort" "C ++"
gabat gelýär:   
( Mysal ) Ikinji parolyň gaty gysga bolsa-da, nädip "nädogry" diýip bellenmändigini görüň. Sen bolmalyseresap boluňyzygiderlilik bilen \b, sebäbi olar diňe nyşanlaryň arasyndaky araçäklere gabat \wgelýär \w. Aboveokardaky mysalda, parollarda nyşanlara rugsat bermändigimiz sebäpli \w, parolyň birinji / soňky nyşanynyň araçägi \söz araçägi kepillendirilmeýär \b.

Bu ädimi tamamlamak üçin diňe bir ýönekeý meseläni çözeris:

Sözleriň araçäkleri, nyşanlaryň belli bir yzygiderliligine gabat gelmek islänimizde, sintaksis şöhlelendiriji hereketlendirijilerde peýdalydyr, ýöne olaryň diňe sözüň başynda ýa-da ahyrynda (ýa-da özbaşdak) ýüze çykýandygyna göz ýetirmek isleýäris. Sintaksis şöhlelendiriji ýazýarys we var sözüni bellemek isleýäris, ýöne diňe özi peýda bolanda (sözdäki beýleki nyşanlara degmezden). Munuň üçin yzygiderli aňlatma ýazyp bilersiňizmi? Elbetde edip bilersiňiz, bu gaty ýönekeý iş;)
nagyş:
setir:   var varx _var ( var j) barvarcar * var var -> { var }
gabat gelýär: ^^^ ^^^ ^^^ ^^^ ^^^  
( Çözgüt )

15-nji ädim: "hataryň ^" başlangyjy "we dollar belgisi $" setiriň soňy "

Yzygiderli aňlatmalary özleşdirmek üçin 20 gysga ädim.  3-nji bölümAraçäk sözi \b(makalanyň öňki böleginiň soňky ädiminden) yzygiderli aňlatmalarda ulanmak üçin elýeterli ýeke-täk nol giňlik yzygiderliligi däl. Iň meşhurlary "caret" ^- "setiriň başlangyjy" we dollar belgisi $- "setiriň soňy". Bularyň birini yzygiderli aňlatmalaryňyza goşmak, oýnuň çeşme setiriniň başynda ýa-da ahyrynda peýda bolmalydygyny aňladýar:
nagyş   : ^ başlamak _ _ 
_ _  
( Mysal ) Eger setiriňizde setir arakesmeleri bar bolsa, ^startislendik setiriň başyndaky "başlangyç" yzygiderliligine gabat gelýär we end$islendik setiriň soňundaky "soňy" yzygiderliligine gabat gelýär (bu ýerde görkezmek kyn bolsa-da). Bu nyşanlar, aýralyklary öz içine alýan maglumatlar bilen işlenende has peýdalydyr. ^9-njy ädimden "setiriň başlangyjy" ulanyp, "faýl ölçegi" meselesine gaýdyp geleliň . Bu mysalda faýl ölçeglerimiz boşluklar bilen bölünýär " ". Şeýlelik bilen, her faýlyň ululygynyň kosmos nyşanyndan ýa-da setiriň başlamagyndan öň san bilen başlamagyny isleýäris:
nagyş: (^ |) (\ d + | \ d + \. \ d +) [KMGT] B 
setir:   6.6KB 1..3KB 12KB 5G 3.3MB KB .6.2TB 9MB .
gabat gelýär: ^^^^^ ^^^^^ ^^^^^^ ^^^^ 
topar:    222 122 1222 12    
( Mysal ) Biz eýýäm maksada gaty ýakyn! Stillöne henizem bir kiçijik meselämiziň bardygyny görüp bilersiňiz: boş faýl nyşanyndan öň boşluk nyşanyna laýyk gelýäris. Indi adaty aňlatma hereketlendirijimiz tapylanda bu surata düşüriş toparyny (1) äsgermezlik edip bileris ýa-da indiki ädimde görjek tutma toparymyzy ulanyp bileris.

Häzirki wagtda, äheň üçin ýene 2 meseläni çözeliň:

Iň soňky ädimden sintaksis şöhlelendiriji mysalymyzy dowam etdirip, käbir sintaksis aýratynlaşdyryş yzky boşluklary, ýagny giňişlik däl belgi bilen setiriň soňunyň arasyndaky islendik boşlugy bellär. Diňe yzky boşluklary bellemek üçin regex ýazyp bilersiňizmi?
nagyş:
setir: myvec <- c (1, 2, 3, 4, 5)  
gabat gelýär:                          ^^^^^^^  
( Çözgüt ) vermaönekeý vergul bilen bölünen baha (CSV) derňewçi, dyngy bilen bölünen "bellikleri" gözlär. Umuman, kotirovka bellikleri goşulmasa, giňişligiň manysy ýok "". Düwürtikleriň arasyndaky belliklere gabat gelýän, ýöne sitatalaryň arasynda bolmadyk ak boşlugy äsgermezlik edýän ýönekeý CSV ýazyň .
nagyş:
setir:   a, "b", "c d", e, f, "g h", dfgi ,, k, "", l 
gabat gelýär: ^^ ^^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^ ^^ ^^^ ^ 
topar:    21 2221 2222212121 222221 222211 21 221 2    
( Çözgüt ) 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