1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminaras: Pattern Matching su Reguliarūs išsireiškimai] 2 00:00:02,000 --> 00:00:04,000 [Jonas Mussman-Harvardo universiteto] 3 00:00:04,000 --> 00:00:07,220 [Tai CS50.-CS50.TV] 4 00:00:07,780 --> 00:00:11,610 Gerai. Na, laukiami visi. Tai CS50 2012. 5 00:00:11,780 --> 00:00:16,610 Mano vardas Jonas, ir aš būsiu kalbėti šiandien apie reguliarios išraiškos. 6 00:00:16,610 --> 00:00:22,530 Reguliarūs išsireiškimai yra visų pirma priemonė, tačiau taip pat kartais naudojamas 7 00:00:22,530 --> 00:00:28,650 kodu aktyviai esmės atitiktų modelius ir eilutes. 8 00:00:28,650 --> 00:00:33,800 Taigi čia interneto Komiksai iš XKCD. 9 00:00:34,440 --> 00:00:42,370 Šioje komiksų yra Murder Mystery, kur žudikas turi 10 00:00:42,370 --> 00:00:47,860 Po ką nors apie atostogas, ir veikėjai turi 11 00:00:47,860 --> 00:00:52,500 ieškoti per 200 megabaitų laiškų ieško adresą. 12 00:00:52,500 --> 00:00:56,090 Ir jie apie pasiduoti, kai kas nors, kas žino, reguliarios išraiškos - 13 00:00:56,090 --> 00:01:00,550 matyt superherojus - swoops žemyn ir rašo tam tikrą kodą 14 00:01:00,550 --> 00:01:02,970 ir išsprendžia nužudymo paslaptį. 15 00:01:02,970 --> 00:01:07,370 Taigi, matyt, kad bus kažkas, kad jums bus suteikta teisė daryti 16 00:01:07,370 --> 00:01:09,370 Po šio seminaro. 17 00:01:09,370 --> 00:01:12,250 Mes tik ketina pateikti glaustą įvadą į kalbą 18 00:01:12,250 --> 00:01:16,770 ir suteikti jums pakankamai Būtinas eiti po daugiau išteklių savo. 19 00:01:17,680 --> 00:01:21,700 >> Taigi, reguliarios išraiškos atrodo iš esmės panašus į šį. 20 00:01:22,930 --> 00:01:25,550 Tai reguliaraus išraiška Ruby. 21 00:01:25,550 --> 00:01:29,280 Tai ne siaubingai skirtingi kalbų. 22 00:01:29,690 --> 00:01:37,630 Mes turime tik nuo nerijos ribos pradėti ir pažymėkite reguliaraus išraiška rubinas. 23 00:01:37,630 --> 00:01:42,880 Ir tai yra reguliaraus išraiška ieškoti elektroninio pašto adresas modelį. 24 00:01:42,880 --> 00:01:49,160 Taigi matome pirmajame tiek atrodo bet raidinę skaitmeninę pobūdžio. 25 00:01:50,500 --> 00:01:54,880 Taip yra todėl, elektroninio pašto adresus, dažnai tenka pradėti nuo abėcėlės simbolį. 26 00:01:55,460 --> 00:01:59,330 Ir tada bet koks specialus simbolis po simbolio @. 27 00:01:59,330 --> 00:02:03,260 Ir tada tas pats domeno pavadinimas. 28 00:02:03,260 --> 00:02:10,030 Ir tada nuo 2 iki 4 simbolių ieškoti. Com,. Neto, ir taip toliau. 29 00:02:10,850 --> 00:02:13,200 Taigi, kad yra dar vienas reguliaraus išraiška pavyzdys. 30 00:02:13,200 --> 00:02:17,270 Taigi, reguliarios išraiškos yra protokolai ieškant patters tekste. 31 00:02:17,270 --> 00:02:21,130 Jie palyginti, selekcijos bei pakeitimus naujais. 32 00:02:21,690 --> 00:02:27,970 Taigi Trečias pavyzdys yra rasti visus telefonų numerius baigdavosi 54 į katalogą. 33 00:02:27,970 --> 00:02:34,360 Taigi prieš David įtrūkimų pirmesniems CS50 kataloge galėtume ieškoti 34 00:02:34,360 --> 00:02:40,450 modelis, kur mes turime skliausteliuose po 3 numeriai tada galų skliaustų, 35 00:02:40,450 --> 00:02:44,070 3 daugiau numerių, brūkšnys, 2 numeriai, ir tada 54. 36 00:02:44,070 --> 00:02:48,310 Ir, kad būtų iš esmės kaip mes atėjo su reguliaraus išraiška ieškodamas kad. 37 00:02:49,150 --> 00:02:52,960 >> Taigi - mes padarėme keletą dalykų CS50, kad yra šiek tiek panašus 38 00:02:52,960 --> 00:02:59,740 reguliarios išraiškos, todėl - pavyzdžiui - į dictionary.C failą 39 00:02:59,740 --> 00:03:04,720 už rašybos tikrintuvo problemų rinkinį, kurį galėtų naudoti fscanf 40 00:03:04,720 --> 00:03:07,930 skaityti iš žodyno žodį. 41 00:03:07,930 --> 00:03:16,240 Ir jūs galite pamatyti procentas 45s ieško kaip 45 simbolių eilutę. 42 00:03:16,240 --> 00:03:20,020 Taigi ji yra šiek tiek panašus į elementaraus reguliaraus išraiška. 43 00:03:21,150 --> 00:03:26,060 Ir jūs galite turėti visus 45 ženklų, kad tilptų sąskaitą ten 44 00:03:26,060 --> 00:03:28,080 ir pasiimti tuos padaryti. 45 00:03:28,080 --> 00:03:33,480 Ir tada antras pavyzdys naujausią interneto programavimo problema 46 00:03:33,480 --> 00:03:40,760 nustatytas Distro kodo php mes iš tikrųjų turėti paprastą reguliaraus išraiška. 47 00:03:40,760 --> 00:03:46,790 Ir tai vienas tiesiog nori patikrinti ar interneto puslapį, kuriame yra perduodama 48 00:03:46,790 --> 00:03:51,940 atitinka arba prisijungimu arba atsijungimu užsiregistruoti. PHP. 49 00:03:52,220 --> 00:03:57,910 Ir tada grįžti true arba false remiantis ta reguliaraus išraiška atitikimo. 50 00:03:59,400 --> 00:04:01,740 >> Taigi, kai jūs naudojate reguliaraus išraiška? 51 00:04:01,740 --> 00:04:04,820 Kodėl tu čia šiandien? 52 00:04:05,330 --> 00:04:08,480 Taigi jūs nenorite naudoti reguliarųjį reiškinį, kai yra kažkas, kad 53 00:04:08,480 --> 00:04:11,640 daro visą darbą už jus, net lengviau. 54 00:04:11,640 --> 00:04:15,510 Taigi, XML ir HTML yra iš tikrųjų gana sudėtinga 55 00:04:15,510 --> 00:04:18,480 rašyti reguliarios išraiškos tol matysime truputį. 56 00:04:19,110 --> 00:04:23,280 Taigi yra skirta analizatoriai tų kalbų. 57 00:04:24,170 --> 00:04:30,060 Jūs taip pat turite būti gerai su kompromisus ir tikslumo dažnai. 58 00:04:30,060 --> 00:04:36,220 Jei bandote - taigi matėme įprastą posakį elektroninio pašto adresą, 59 00:04:37,370 --> 00:04:42,590 bet sako, kad jūs norėjo tam tikrą elektroninio pašto adresą ir palaipsniui 60 00:04:42,590 --> 00:04:48,570 reguliarieji reiškiniai gali tapti sudėtingesnė, nes ji tapo tikslesnės. 61 00:04:49,580 --> 00:04:52,260 Taigi, kad būtų vienas kompromisas. 62 00:04:52,260 --> 00:04:55,330 Jūs turite būti tikri, kad jūs gerai padaryti su reguliaraus išraiška. 63 00:04:55,330 --> 00:04:57,920 Jei tiksliai žinote, ką jūs ieškote, kad jis gali padaryti daugiau prasmės 64 00:04:57,920 --> 00:05:02,070 įdėti į laiką ir rašyti efektyviau analizatorius. 65 00:05:02,070 --> 00:05:06,980 Ir pagaliau yra istorinė problema su tvarkingumu 66 00:05:06,980 --> 00:05:08,940 išraiškų ir kalbų. 67 00:05:08,940 --> 00:05:12,960 Reguliarūs išsireiškimai iš tikrųjų yra daug galingesnė, negu 68 00:05:12,960 --> 00:05:16,450 reguliarios išraiškos per sakyti oficialiame prasme. 69 00:05:17,130 --> 00:05:20,150 >> Taigi, aš nenoriu eiti per toli į oficialią teoriją, 70 00:05:20,150 --> 00:05:24,000 bet dauguma kalbos, kad mes kodas iš tikrųjų nėra teisingi. 71 00:05:24,000 --> 00:05:29,110 Ir tai, kodėl reguliarios išraiškos kartais nėra laikomi visi, kad saugus. 72 00:05:29,670 --> 00:05:33,150 Taigi, iš esmės yra Chomsky hierarchija kalbomis, 73 00:05:33,150 --> 00:05:38,400 ir reguliarios išraiškos yra sukurti naudojant sąjunga, sujungimas, 74 00:05:38,400 --> 00:05:41,810 ir kad Klin žvaigždučių operaciją, kuri mes matome per kelias minutes. 75 00:05:43,130 --> 00:05:48,860 Jei domina teorija yra gana daug ten vyksta po gaubtu. 76 00:05:50,360 --> 00:05:55,880 >> Taigi Trumpa istorija - tik konteksto čia - reguliarūs rinkiniai atėjo 77 00:05:55,880 --> 00:05:59,580 1950, ir tada mes turėjome paprastus redaktoriai, kad 78 00:05:59,580 --> 00:06:03,300 įtraukti reguliarios išraiškos - tiesiog ieško eilutes. 79 00:06:03,570 --> 00:06:09,110 Grep - tai yra komandų eilutės įrankis - buvo vienas iš pirmųjų 80 00:06:09,110 --> 00:06:14,160 labai populiarus įrankius, kurie įtraukti reguliarios išraiškos 1960. 81 00:06:14,160 --> 00:06:20,560 80-ųjų, Perl buvo pastatyta - tai programavimo kalba, kuri 82 00:06:20,560 --> 00:06:24,110 apima reguliarios išraiškos labai gerai. 83 00:06:24,550 --> 00:06:30,130 Ir tada visai neseniai mes turėjome Perl suderinamą reguliaraus išraiška 84 00:06:30,130 --> 00:06:35,870 protokolai iš esmės kitomis kalbomis, kurios naudoja daug tą pačią sintaksę. 85 00:06:36,630 --> 00:06:39,840 Žinoma, svarbiausias įvykis buvo 2008 metais 86 00:06:39,840 --> 00:06:43,040 ten, kur buvo pirmasis nacionalinis išraiškų diena, 87 00:06:43,040 --> 00:06:47,350 kuris manau yra birželio 1, jei norite švęsti, kad. 88 00:06:48,430 --> 00:06:50,840 >> Vėlgi, tik šiek tiek daugiau teorija čia. 89 00:06:52,180 --> 00:06:55,320 Taigi yra pora skirtingų būdų, kaip statyti reguliarios išraiškos. 90 00:06:55,950 --> 00:07:02,050 Vienas paprastas būdas yra sukurti išraišką, jūs ketinate 91 00:07:02,050 --> 00:07:07,500 paleisti į eilutę interpretuoti - iš esmės sukurti mažai mini programa, kuri 92 00:07:07,500 --> 00:07:11,870 analizuojame vienetų eilutę ir pamatyti, "O, ar tai tinka reguliaraus išraiška, ar ne?" 93 00:07:12,250 --> 00:07:14,250 Ir tada paleisti, kad. 94 00:07:14,250 --> 00:07:17,300 Taigi, jei turite labai mažą reguliaraus išraiška, tai tikriausiai 95 00:07:17,300 --> 00:07:19,380 efektyviausias būdas tai padaryti. 96 00:07:20,090 --> 00:07:25,420 Ir tada, jei jūs - dar vienas variantas yra, kad rekonstruojant 97 00:07:25,420 --> 00:07:30,260 išraiška, kaip jūs einate, ir kad yra galimybė imituoti. 98 00:07:30,440 --> 00:07:37,690 Ir šitie ankstyvieji bandymai reguliariais išraiškos algoritmai 99 00:07:37,690 --> 00:07:44,330 gana paprasta ir gana greitai, bet neturėjo daug lankstumo. 100 00:07:44,330 --> 00:07:47,500 Taigi, norint padaryti dar kai kurių dalykų, kad mes ketiname pažvelgti į 101 00:07:47,500 --> 00:07:52,860 šiandien mes turėjome padaryti sudėtingesnį reguliaraus išraiška 102 00:07:52,860 --> 00:07:56,650 diegimas, kurie yra potencialiai daug lėčiau, kad yra kažkas, kad nepamiršti 103 00:07:57,510 --> 00:08:02,920 Taip pat reguliariai išraiškos neigimas Atakos įvairovė 104 00:08:02,920 --> 00:08:08,330 kad išnaudoti šių naujesnių realizavimo galimybes 105 00:08:08,330 --> 00:08:10,930 reguliarios išraiškos tapti labai sudėtinga. 106 00:08:11,570 --> 00:08:15,650 Ir panašiai ta prasme, kad matėme buferio perpildymo atakų, 107 00:08:15,650 --> 00:08:21,610 turite atakų, kad darbas darant rekursinių kilpas, kad 108 00:08:21,610 --> 00:08:24,400 viršyta su atminties talpą. 109 00:08:24,780 --> 00:08:29,540 Ir beje Regexen yra viena iš oficialių daugiskaitos reguliaraus išraiška 110 00:08:29,540 --> 00:08:32,890 pagal analogiją jaučių į anglosaksų. 111 00:08:33,500 --> 00:08:40,169 >> Gerai, kad Python biblioteka daugelis iš jūsų čia asmeniškai turite Mac, 112 00:08:40,169 --> 00:08:43,860 todėl jūs iš tikrųjų galite traukti tai ant ekrano. 113 00:08:43,860 --> 00:08:47,480 Reguliarūs išsireiškimai yra pastatytas į Python. 114 00:08:48,070 --> 00:08:53,020 Ir taip Python yra pakrautų Mac ir taip pat galima rasti internete adresu šią nuorodą. 115 00:08:53,770 --> 00:08:57,350 Taigi, jei jūs žiūrite galite pristabdyti ir įsitikinkite, kad turite Python 116 00:08:58,080 --> 00:09:00,170 kaip mes žaisti aplink čia. 117 00:09:00,780 --> 00:09:06,420 Yra vadovas internete, todėl, jei jūs tiesiog įveskite Python į kompiuterį 118 00:09:06,420 --> 00:09:10,500 pamatysite, kad versija ateina į terminalą. 119 00:09:11,070 --> 00:09:17,720 Taigi, aš pateikė nuorodą į vadove Python 2 versija taip pat Cheat sheet. 120 00:09:17,720 --> 00:09:23,100 Yra 3 versija Python, bet jūsų Mac nebūtinai 121 00:09:23,100 --> 00:09:25,130 ateina su, kad pakrautų. 122 00:09:25,130 --> 00:09:27,360 Taigi nelabai skiriasi. 123 00:09:27,360 --> 00:09:33,270 Gerai, kad kai naudojant reguliarios išraiškos Python pagrindai. 124 00:09:34,080 --> 00:09:42,650 >> Taigi čia aš labai paprastą išraišką, todėl aš Python importas iš naujo 125 00:09:43,750 --> 00:09:47,070 ir tada paėmė re.search rezultatą. 126 00:09:47,070 --> 00:09:49,910 Ir paieškos trunka 2 argumentus. 127 00:09:49,910 --> 00:09:56,040 Pirmasis yra reguliaraus išraiška, o antrasis yra tekstas 128 00:09:56,040 --> 00:09:58,290 arba eilutę norite analizuoti. 129 00:09:58,290 --> 00:10:01,210 Ir tada aš atspausdintas iš result.group. 130 00:10:01,580 --> 00:10:05,860 Taigi tai yra 2 pagrindinės funkcijos mes ketiname pamatyti šiandien 131 00:10:06,790 --> 00:10:10,170 sužinoti apie reguliarios išraiškos. 132 00:10:10,170 --> 00:10:12,880 Taigi tiesiog skaidyti tai reguliaraus išraiška čia 133 00:10:12,880 --> 00:10:21,770 h, o tada \ w ir m taip \ w tiesiog prisiima kokią abėcėlės raidę ten. 134 00:10:21,850 --> 00:10:26,820 Taigi čia mes ieškome už "h" ir tada kitą abėcėlės raidė 135 00:10:26,820 --> 00:10:30,060 ir tada m, todėl čia, kad būtų suderinti kumpis 136 00:10:30,060 --> 00:10:34,480 IN, "Abraomas Linkolnas ir kumpio sumuštiniai". 137 00:10:35,040 --> 00:10:37,150 Tai tos grupės rezultatas. 138 00:10:37,680 --> 00:10:43,130 Kitas dalykas, kad mes galime padaryti, tai naudoti mūsų iki teksto eilutes Python. 139 00:10:43,130 --> 00:10:46,220 Taigi, manau, aš eisiu į priekį ir patraukite, kad čia. 140 00:10:46,220 --> 00:10:49,210 Python importas iš naujo. 141 00:10:50,070 --> 00:10:54,000 Ir jei aš buvo padaryti tą patį - tarkim, tekstas, 142 00:10:55,390 --> 00:11:00,800 "Abraomas" mums padidinti - ten mes einame. 143 00:11:01,610 --> 00:11:06,430 Tekstas, tardamas: "Abraomai valgo kumpis". 144 00:11:07,460 --> 00:11:15,260 Gerai, tada Rezultatas = re.search. 145 00:11:16,260 --> 00:11:22,020 Ir tada mūsų išraiška gali būti h, tada aš darysiu dot m. 146 00:11:22,020 --> 00:11:26,280 Taigi taškas tereikia bet kokius simbolius, kad yra ne nauja linija įskaitant skaičius, 147 00:11:26,280 --> 00:11:28,650 procentinio ženklai, nieko panašaus. 148 00:11:28,650 --> 00:11:38,030 Ir tada tekstas - bumas - ir tada result.group--taip. 149 00:11:38,030 --> 00:11:41,820 Taigi, tai tik kaip įgyvendinti pagrindines funkcijas čia. 150 00:11:42,300 --> 00:11:55,110 Jei mes turėjome teksto žiedas, - kad proto tekstą - įtraukti pasakyti daug atgal nerijos ribos 151 00:11:55,110 --> 00:12:01,180 ir styginiams viduje ir viskas, kad galėtų atrodyti pabėgti sekas, 152 00:12:01,180 --> 00:12:08,480 tada mes tikriausiai norėsite naudoti žalio teksto įvesties įsitikinti, kad priimtas. 153 00:12:08,480 --> 00:12:14,120 Ir tai tik atrodo, kad. 154 00:12:14,120 --> 00:12:17,810 Taigi, jei mes ieškojome kiekvienam iš jų ten turėtume rasti nieko. 155 00:12:19,070 --> 00:12:21,680 Bet tai kaip jūs jį įgyvendinti; prieš eilutė 156 00:12:21,680 --> 00:12:24,990 reguliarieji reiškiniai jūs įtraukėte raidžių r. 157 00:12:26,150 --> 00:12:30,260 >> Gerai, kad mums nesustoti. 158 00:12:30,260 --> 00:12:33,730 Visos teisės - todėl leiskite mums pažvelgti į keletą pasikartojančių modelių čia. 159 00:12:34,750 --> 00:12:39,150 Taigi vienas dalykas, kurį norite padaryti, tai kartoti dalykus 160 00:12:40,040 --> 00:12:42,480 kaip jums ieškoti per tekstą. 161 00:12:42,480 --> 00:12:48,300 Taigi, norint padaryti po bet kokio b skaičius - jūs ab *. 162 00:12:48,630 --> 00:12:51,620 Ir tada yra kitų taisyklių serija taip pat. 163 00:12:51,620 --> 00:12:54,380 Ir jūs galite ieškoti visų šių Up; aš tiesiog paleisti per kai 164 00:12:54,380 --> 00:12:57,630 dažniausiai naudojami tie. 165 00:12:57,630 --> 00:13:03,920 Taigi ab + yra po bet kuris N didesnis už 0 ir b. 166 00:13:04,510 --> 00:13:08,000 ab? yra po 0 arba 1 b. 167 00:13:09,190 --> 00:13:18,580 ab {N} yra po N iš b, tada taip toliau. 168 00:13:18,580 --> 00:13:22,820 Jei jūs turite 2 numerius klamrowych esate nurodant intervalą 169 00:13:23,300 --> 00:13:25,440 kad gali būti galbūt suderinta. 170 00:13:26,390 --> 00:13:30,420 Taigi mes išsamiau panagrinėsime pora kartojimu per minutę. 171 00:13:31,960 --> 00:13:42,300 Taigi 2 dalykai, kuriuos reikia turėti omenyje, kai naudojant šias modelio atitikimo įrankiai čia. 172 00:13:42,300 --> 00:13:52,120 Taigi sako, kad mes norime pažvelgti į HM iš "Abraomas Linkolnas daro kumpio sumuštinių. 173 00:13:52,120 --> 00:13:55,230 Taigi aš pakeičiau Abraomas Linkolnas vardą Abraomui. 174 00:13:55,230 --> 00:14:00,290 Ir dabar mes ieškome, kas yra grąžinami šioje paieškos funkcija, 175 00:14:00,290 --> 00:14:03,270 ir ji tik grįžta kumpis šiuo atveju. 176 00:14:03,620 --> 00:14:08,080 Ir ji tai daro, nes paieškos tiesiog natūraliai mano kairę labiausiai eilę. 177 00:14:08,080 --> 00:14:12,130 Ir visi reguliarios išraiškos Jei nenurodysite kitaip bus padaryti. 178 00:14:12,830 --> 00:14:18,880 Jei mes norėjome rasti viską, šiai funkcijai - Rasti visus. 179 00:14:18,880 --> 00:14:35,100 Taigi, kad gali tiesiog atrodyti visus = re.findall ("h.m", tekstas) 180 00:14:35,100 --> 00:14:44,540 ir tada all.group (). 181 00:14:44,540 --> 00:14:51,040 Visi gamina ir kumpio ir kumpio; šiuo atveju tiek iš Abraomo stygos kumpio. 182 00:14:51,610 --> 00:14:55,110 Taigi, kad yra kitas variantas. 183 00:14:56,250 --> 00:15:06,940 >> Didysis. Kitas dalykas, reikia nepamiršti, kad reguliarios išraiškos imtis didžiausia intuityviai. 184 00:15:06,940 --> 00:15:09,520 Pažvelkime į šiame pavyzdyje. 185 00:15:10,200 --> 00:15:16,070 Mes padarėme, kad paliko didžiausią paiešką čia, ir tada aš bandė didesnį paiešką 186 00:15:16,070 --> 00:15:18,800 naudojant Klin žvaigždučių operatorių. 187 00:15:18,800 --> 00:15:24,180 Taigi, "Abraomas Linkolnas daro kumpio sumuštiniai", ir aš tik gavau atgal 188 00:15:24,180 --> 00:15:26,280 m, kaip rezultatas. 189 00:15:26,280 --> 00:15:31,670 Dėl šios klaidos priežastis buvo ta, kad aš galėjo imtis jokių skaičių 190 00:15:31,670 --> 00:15:36,140 h, nes man nenurodė nieko eiti tarp h ir m. 191 00:15:36,140 --> 00:15:42,010 Tik pavyzdys ten, kad buvo m - tik pavyzdžiai, ten su m, jis 192 00:15:42,010 --> 00:15:46,220 ir bet H numerį buvo tik styginių m. 193 00:15:46,490 --> 00:15:51,850 Tada aš bandė jį vėl pasakiau: "Gerai, leiskite mums gauti faktinį didžiausią grupę čia." 194 00:15:51,850 --> 00:15:59,670 Ir tada aš h. * M, kad sugrįžtų bet kokį simbolių tarp h ir m. 195 00:16:00,280 --> 00:16:02,950 Ir jei jūs tik pradedate, ir galvoja: "O, gerai, gerai tai 196 00:16:02,950 --> 00:16:11,560 man gauti kumpis "ji iš tikrųjų trunka viską nuo H Abraomo Linkolno 197 00:16:11,560 --> 00:16:13,690 visą kelią iki kumpis pabaigos. 198 00:16:14,040 --> 00:16:18,110 Tai godus, jis mato h - visa tai kitas tekstas - m, 199 00:16:18,110 --> 00:16:21,280 ir kad tai, ką ji mano, in 200 00:16:22,060 --> 00:16:27,480 Tai ypač baisiausia - tai funkcija, mes taip pat galime 201 00:16:27,480 --> 00:16:30,670 nurodyti, kad ji negali būti godus naudojant kitas funkcijas. 202 00:16:31,480 --> 00:16:34,490 Bet tai, ką mes turime nepamiršti, ypač 203 00:16:34,490 --> 00:16:38,720 kai žiūri HTML tekstą, kuris yra viena iš priežasčių, 204 00:16:38,720 --> 00:16:41,500 reguliarios išraiškos yra sunku HTML. 205 00:16:42,460 --> 00:16:46,310 Nes jei turite HTML atvirą žymeklį ir tada daug dalykų viduryje 206 00:16:46,310 --> 00:16:49,820 ir tada kai kurie kiti HTML uždarytas tegus gerokai vėliau programoje, 207 00:16:49,820 --> 00:16:55,420 ką tik suvalgyti iš jūsų HTML kodas aikštelė galbūt per klaidą. 208 00:16:56,200 --> 00:17:01,840 >> Visos teisės - todėl daugiau specialių simbolių, kaip ir daugelis kitų kalbų, 209 00:17:01,840 --> 00:17:04,780 mes pabėgti naudojant velniop. 210 00:17:04,780 --> 00:17:10,329 Taigi, mes galime naudoti dot nurodyti bet kokius simbolius išskyrus iš naujos eilutės. 211 00:17:10,329 --> 00:17:14,550 Mes galime naudoti pabėgti w nurodyti bet kokią abėcėlės simbolį. 212 00:17:14,550 --> 00:17:20,329 Ir pagal analogiją pabėgti D bet koks sveikasis skaičius - skaitmeninis simbolis. 213 00:17:20,630 --> 00:17:27,440 Mes galime nurodyti - mes galime naudoti skliausteliuose nurodyti susijusios sąvokos. 214 00:17:27,440 --> 00:17:30,970 Taigi, šis sutiktų a, b, arba c. 215 00:17:31,320 --> 00:17:37,000 Ir mes taip pat gali patikslinti ar variantų arba a arba b. 216 00:17:37,000 --> 00:17:41,110 Pavyzdžiui - jei mes ieškojome keletą galimybių 217 00:17:41,110 --> 00:17:44,940 skliausteliuose mes galime naudoti arba operatorius, kaip - 218 00:17:44,940 --> 00:17:52,480 todėl leiskite mums grįžti į šiame pavyzdyje čia. 219 00:17:53,000 --> 00:17:59,790 O dabar leiskite mums imtis - grįžkime į šiame pavyzdyje čia, ir tada 220 00:17:59,790 --> 00:18:12,290 imtis AE - todėl tai turėtų grįžti - manau, kad tai vis dar yra Abraomas. 221 00:18:12,290 --> 00:18:17,410 Taigi tai - jei mes visi - puikus. 222 00:18:17,410 --> 00:18:22,700 Taigi leiskite mums atnaujinti tekstą čia. 223 00:18:22,700 --> 00:18:34,690 "Abraomas valgo kumpį o Hemming savo -. Nors Hemming" Didysis. 224 00:18:44,090 --> 00:18:47,330 Viskas. Didysis. Dabar mes kumpis, kumpis, ir apvadą. 225 00:18:48,510 --> 00:18:59,370 Nors Hemming - o dūzgiantis jam - o dūzgiantis į hem jį. Didysis. 226 00:19:00,350 --> 00:19:03,250 Tas pats dalykas. 227 00:19:03,820 --> 00:19:09,180 Dabar viskas grįžta dar tik kumpis, kumpis, ir apsiuvas be įlaipinami į hum arba jam. 228 00:19:09,940 --> 00:19:22,600 Puikus - taigi ką daryti, jei mes norėjome pažvelgti tiek, kad - taip, mes taip pat galėtų padaryti 229 00:19:23,510 --> 00:19:33,810 jam arba - mes sugrįšime prie to. 230 00:19:34,810 --> 00:19:45,760 Gerai - taip - viskas gerai - tose vietose, taip pat galite naudoti Žymeklis arba dolerio ženklas 231 00:19:45,760 --> 00:19:49,350 nurodyti, kad jūs ieškote ko nors, yra pradžioje arba eilutę pabaigoje. 232 00:19:50,260 --> 00:19:52,260 Arba pradžios arba žodžio pabaiga. 233 00:19:52,400 --> 00:19:54,470 Tai yra vienas iš būdų ją naudoti. 234 00:19:55,630 --> 00:20:01,160 >> Gerai - todėl leiskite mums žaisti aplink su šiek tiek didesnis teksto bloko. 235 00:20:03,950 --> 00:20:08,310 Tarkime, šią eilutę čia - šį teiginį čia. 236 00:20:08,310 --> 00:20:11,360 Reguliariai išraiškos galia, kad jie gali nurodyti modeliai 237 00:20:11,360 --> 00:20:13,390 ne tik nustatyti simbolių. 238 00:20:14,900 --> 00:20:18,790 Leiskite mums padaryti - vadinkime šį bloką. 239 00:20:22,400 --> 00:20:27,110 Tada mes skaityti visa tai in 240 00:20:28,890 --> 00:20:50,820 Ir tada - leiskite mums padaryti visus =; tai kas yra keletas dalykų, mes galime ieškoti čia pelningai? 241 00:20:50,820 --> 00:20:54,070 Mes galime ieškoti išraiškos ausies. 242 00:20:55,050 --> 00:21:01,520 Nėra labai įdomu. Kaip apie tai? Mes pamatyti, kas atsitiks. 243 00:21:03,710 --> 00:21:05,710 Aš davė jai problemą. 244 00:21:06,380 --> 00:21:10,750 Taigi bet koks dalykų prieš naujo ir viskas. 245 00:21:10,750 --> 00:21:15,630 Taigi, kad turėtų grąžinti viską, nuo pradžios iki visa naujo gal porą kartų. 246 00:21:18,800 --> 00:21:21,970 Ir tada čia mes turime reguliariai išraiškos galia, kad jie 247 00:21:21,970 --> 00:21:24,900 galite nurodyti modelius ne tik ženklai čia yra. 248 00:21:24,900 --> 00:21:28,510 Taigi visą kelią iki galutinio naujo, jis pradėjo su kairėje labiausiai ir buvo godus. 249 00:21:30,710 --> 00:21:32,710 Pažiūrėkime - ką dar galėtume ieškoti. 250 00:21:32,710 --> 00:21:39,860 Manau, vienas dalykas, jei buvo įdomu ieško įvardžių ji ir jis, 251 00:21:39,860 --> 00:21:44,600 galite patikrinti S yra lygus 0 arba 1 252 00:21:44,600 --> 00:21:49,710 ir išraiška jis, ir tai tikriausiai nesiruošia grįžti - 253 00:21:49,710 --> 00:21:58,020 Oh, aš manau, kad jis grįžo jis, nes mes ieškome ne galios, tą dieną, čia yra. 254 00:22:00,590 --> 00:22:06,270 Stenkimės, nurodant, kad tai turi ateiti į kažką pradžioje. 255 00:22:06,640 --> 00:22:09,530 Leiskite mums pamatyti, jei tai nebebus. 256 00:22:09,530 --> 00:22:19,630 Taigi, mes galime padaryti, riebalų, ir mes negalime gauti nieko, nes ji ir jis 257 00:22:19,630 --> 00:22:22,870 nepasitaiko šios frazės. 258 00:22:24,960 --> 00:22:30,410 Didysis. Gerai - todėl atgal į kačių čia. 259 00:22:30,410 --> 00:22:35,720 Taigi sudėtingesnis kenkia smegenims. 260 00:22:35,720 --> 00:22:40,500 Taigi tai yra, kodėl mes naudoti reguliarios išraiškos išvengti šių problemų. 261 00:22:40,820 --> 00:22:43,520 >> Taigi, čia yra keletas kitų naudingų režimai galite žaisti aplink su. 262 00:22:43,520 --> 00:22:50,290 Mes pažvelgė į paieškos šiandien, bet taip pat galite naudoti rungtynės, Splitas, findall ir grupes. 263 00:22:50,290 --> 00:22:53,970 Taigi kitų įdomių dalykų, kuriuos galite padaryti su reguliarios išraiškos, be tik 264 00:22:53,970 --> 00:22:58,870 ieško modelių yra vartoti modelį ir turintis visas rungtynes ​​- 265 00:22:58,870 --> 00:23:02,530 jos kintamieji - o tada naudojant tuos savo kodą vėliau. 266 00:23:02,850 --> 00:23:05,980 Tai gali būti labai naudinga. Kiti dalykai gali būti skaičiavimas. 267 00:23:05,980 --> 00:23:11,720 Taigi, mes galime tikėtis egzempliorių, reguliaraus išraiška modelio numeriu, 268 00:23:11,720 --> 00:23:13,960 ir kad tai, ką mes galime naudoti grupes. 269 00:23:13,960 --> 00:23:17,550 Ir kitų rūšių, taip pat taip pat yra įmanoma. 270 00:23:18,040 --> 00:23:22,980 Taigi aš tiesiog noriu kalbėti šiek tiek daugiau apie kitų būdų, galite naudoti reguliarios išraiškos. 271 00:23:22,980 --> 00:23:29,100 >> Taigi vienas labiau pažengusios programa yra Apytikslė atitikimo. 272 00:23:29,100 --> 00:23:33,450 Taigi, jei jūs ieškote už laisvę, Julijus Cezaris tekstą, 273 00:23:33,450 --> 00:23:37,740 ir pamatysite arba Gaius Julius Caesar arba pavadinimas Julijus Cezaris kitomis kalbomis, 274 00:23:37,740 --> 00:23:44,400 tada jūs taip pat norite priskirti šiek tiek svorio, kad šių vertybių. 275 00:23:44,400 --> 00:23:48,930 Ir jei ji yra pakankamai arti - jei jis kerta tam tikrą ribą - tuomet jūs norite 276 00:23:48,930 --> 00:23:50,860 kad būtų galima priimti Julijus Cezaris. 277 00:23:50,860 --> 00:24:00,580 Taigi yra pora įvairių diegiamų už tai per kelias kitas kalbas, taip pat. 278 00:24:02,580 --> 00:24:08,420 Čia yra keletas kitų įrankių, Regex pal - patogus mažai app internete 279 00:24:08,420 --> 00:24:12,190 patikrinti, ar jūsų reguliarios išraiškos yra sudarytas teisingai. 280 00:24:12,190 --> 00:24:18,500 Taip pat yra atskira priemonės, kurias galite paleisti iš darbalaukio 281 00:24:18,500 --> 00:24:22,100 kaip Ultra Pico ir taip pat tik kucharskie. 282 00:24:22,100 --> 00:24:25,410 Taigi, jei darai projektą, kuris apima reguliarios išraiškos toną 283 00:24:25,410 --> 00:24:29,810 tai tikriausiai kur eiti ne šiandien taikymo sritį. 284 00:24:31,520 --> 00:24:35,770 Ir tada tiesiog suteikti jums, kaip bendro yra prasmės 285 00:24:35,770 --> 00:24:44,090 yra grep "Unix", Perlas turi built-in, ir C yra PCRE už C. 286 00:24:44,090 --> 00:24:48,890 Ir tada visos šios kitos kalbos taip pat turi reguliaraus išraiška paketus 287 00:24:48,890 --> 00:24:52,020 kad dirbti su iš esmės tą patį sintaksė Mes turime šiandienos skonį. 288 00:24:52,020 --> 00:24:54,790 PHP, Java, Ruby ir pan. 289 00:24:56,080 --> 00:24:58,980 >> "Google Code Search" yra iš tikrųjų verta paminėti, tai yra vienas iš 290 00:24:58,980 --> 00:25:05,720 santykinai nedaug prašymų iš ten, kad leidžia visuomenei susipažinti 291 00:25:05,720 --> 00:25:07,800 jos duomenų bazę, naudojant reguliarios išraiškos. 292 00:25:07,800 --> 00:25:12,920 Taigi, jei jums atrodo "Google" kodo paieškoje rasite kodą 293 00:25:12,920 --> 00:25:16,880 jei jūs ieškote, kaip funkcija gali būti naudojamas, pavyzdžiui, 294 00:25:16,880 --> 00:25:21,610 galite naudoti reguliarųjį reiškinį rasti šią funkciją yra naudojamas visų skirtingų rūšių atvejais. 295 00:25:21,610 --> 00:25:28,000 Jūs galite ieškoti fwrite, ir tada jūs galite ieškoti į rašyti vėliava arba skaityti 296 00:25:28,000 --> 00:25:32,000 jei norėjo iš fwrite yra naudojama šiuo atveju pavyzdys. 297 00:25:33,530 --> 00:25:37,010 Taigi tas pats ten, ir čia yra keletas nuorodų. 298 00:25:37,010 --> 00:25:40,990 Tai bus galima rasti internete, taip pat, todėl vyksta į priekį, jei 299 00:25:40,990 --> 00:25:45,560 jūs norėsite pažvelgti į Python, grep, Perl - jūs tiesiog norite gauti įkvėpimo 300 00:25:45,560 --> 00:25:50,650 arba, jei norite ieškoti daugiau ne teorijos čia yra gerų nušokti vietose. 301 00:25:50,650 --> 00:25:53,870 Labai ačiū. 302 00:25:58,470 --> 00:25:59,910 [CS50.TV]