1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminaari: Pattern Matching säännöllisiä lausekkeita] 2 00:00:02,000 --> 00:00:04,000 [John Mussman-Harvard University] 3 00:00:04,000 --> 00:00:07,220 [Tämä on CS50.-CS50.TV] 4 00:00:07,780 --> 00:00:11,610 Okei. No, tervetuloa kaikille. Tämä on CS50 2012. 5 00:00:11,780 --> 00:00:16,610 Nimeni on John, ja aion puhua tänään säännöllisiä lausekkeita. 6 00:00:16,610 --> 00:00:22,530 Säännölliset lausekkeet on ensisijaisesti väline, mutta myös joskus käytetään 7 00:00:22,530 --> 00:00:28,650 koodin aktiivisesti lähinnä vastaamaan malleja ja jousille. 8 00:00:28,650 --> 00:00:33,800 Joten tässä on web sarjakuva päässä xkcd. 9 00:00:34,440 --> 00:00:42,370 Tässä sarjakuva on murhamysteeri, jossa tappaja on 10 00:00:42,370 --> 00:00:47,860 jälkeen joku lomalla, ja päähenkilöt on 11 00:00:47,860 --> 00:00:52,500 etsiä 200 megatavua sähköposteja etsivät osoite. 12 00:00:52,500 --> 00:00:56,090 Ja he ovat aikeissa luopua, kun joku, joka tietää säännöllisiä lausekkeita - 13 00:00:56,090 --> 00:01:00,550 oletettavasti supersankari - swoops alas ja kirjoittaa koodia 14 00:01:00,550 --> 00:01:02,970 ja ratkaisee murha mysteeri. 15 00:01:02,970 --> 00:01:07,370 Niin todennäköisesti se, että on jotain, että sinulla on valtuudet tehdä 16 00:01:07,370 --> 00:01:09,370 tämän jälkeen seminaarin. 17 00:01:09,370 --> 00:01:12,250 Olemme juuri menossa antaa tiivis johdatus kielen 18 00:01:12,250 --> 00:01:16,770 ja antaa sinulle tarpeeksi keinot mennä sen jälkeen enemmän resursseja itse. 19 00:01:17,680 --> 00:01:21,700 >> Joten säännöllisiä lausekkeita näyttää pohjimmiltaan kuin tämä. 20 00:01:22,930 --> 00:01:25,550 Tämä on säännöllinen lauseke Ruby. 21 00:01:25,550 --> 00:01:29,280 Se ei ole kovin erilainen eri kielillä. 22 00:01:29,690 --> 00:01:37,630 Meillä on juuri viiltää alkaa ja merkitse säännöllisen lausekkeen Ruby. 23 00:01:37,630 --> 00:01:42,880 Ja tämä on säännöllinen lauseke etsiä sähköpostiosoitteesi kuvio. 24 00:01:42,880 --> 00:01:49,160 Joten näemme ensimmäisen bitin etsii aakkosnumeerisia merkkejä. 25 00:01:50,500 --> 00:01:54,880 Tämä johtuu sähköpostiosoitteet usein aloittaa kirjaimesta. 26 00:01:55,460 --> 00:01:59,330 Ja sitten kaikki erikoismerkin jälkeen @-merkkiä. 27 00:01:59,330 --> 00:02:03,260 Ja sitten sama asia verkkotunnus. 28 00:02:03,260 --> 00:02:10,030 Ja sitten välillä 2 ja 4 merkkiä etsiä. Com,. Net, ja niin edelleen. 29 00:02:10,850 --> 00:02:13,200 Niin, että on toinen esimerkki säännöllinen lauseke. 30 00:02:13,200 --> 00:02:17,270 Joten säännöllisiä lausekkeita ovat protokollia löytää hahmoissa tekstiä. 31 00:02:17,270 --> 00:02:21,130 He tekevät vertailuja, valintoja, ja vaihdot. 32 00:02:21,690 --> 00:02:27,970 Joten Kolmas esimerkki on löytää kaikki puhelinnumerot päättyy 54 hakemistoon. 33 00:02:27,970 --> 00:02:34,360 Joten ennen David repi CS50 hakemistoon voisimme etsiä 34 00:02:34,360 --> 00:02:40,450 kuvio, jossa meillä on suluissa sitten 3 numeroa sitten lopulta suluissa 35 00:02:40,450 --> 00:02:44,070 3 enemmän numeroita, viiva, 2 numeroa, ja sitten 54. 36 00:02:44,070 --> 00:02:48,310 Ja se olisi lähinnä siitä, kuinka keksimme säännöllinen lauseke etsiä sitä. 37 00:02:49,150 --> 00:02:52,960 >> Joten on - olemme tehneet joitakin asioita CS50, jotka ovat vähän kuin 38 00:02:52,960 --> 00:02:59,740 säännöllisiä lausekkeita, niin - esimerkiksi - in dictionary.C tiedosto 39 00:02:59,740 --> 00:03:04,720 ja oikeinkirjoituksen tarkistus Harjoitus olet saattanut käyttää fscanf 40 00:03:04,720 --> 00:03:07,930 lukea sanan sanakirjasta. 41 00:03:07,930 --> 00:03:16,240 Ja voit nähdä prosenttiosuus 45s etsii merkkijono on 45 merkkiä. 42 00:03:16,240 --> 00:03:20,020 Joten se on hieman kuin alkeellinen säännöllinen lauseke. 43 00:03:21,150 --> 00:03:26,060 Ja voit olla mitä tahansa 45 merkkiä, jotka sopivat laskun siellä 44 00:03:26,060 --> 00:03:28,080 ja poimia ne ylös. 45 00:03:28,080 --> 00:03:33,480 Ja sitten toinen esimerkki viimeisimmän web ohjelmointi ongelma 46 00:03:33,480 --> 00:03:40,760 asetettu distro koodi php emme oikeastaan ​​on yksinkertainen säännöllinen lauseke. 47 00:03:40,760 --> 00:03:46,790 Ja tämä on vain yksinkertaisesti haluavat tarkistaa, jos Web-sivu, joka on läpäissyt 48 00:03:46,790 --> 00:03:51,940 vastaa joko kirjaudutaan sisään tai ulos Rekisteröidy. PHP. 49 00:03:52,220 --> 00:03:57,910 Ja palaavat sitten tosi tai epätosi perusteella, että säännöllisten lausekkeiden haku. 50 00:03:59,400 --> 00:04:01,740 >> Joten kun käytät säännöllinen lauseke? 51 00:04:01,740 --> 00:04:04,820 Miksi olet täällä tänään? 52 00:04:05,330 --> 00:04:08,480 Joten et halua käyttää säännöllisiä lausekkeita, kun siellä on jotain, joka 53 00:04:08,480 --> 00:04:11,640 tekee työtä sinulle vieläkin helpommin. 54 00:04:11,640 --> 00:04:15,510 Joten XML ja HTML ovat oikeastaan ​​aika hankala 55 00:04:15,510 --> 00:04:18,480 kirjoittaa säännöllisiä lausekkeita niin tulemme näkemään hieman. 56 00:04:19,110 --> 00:04:23,280 Joten on omistettu jäsentimiä niistä kielistä. 57 00:04:24,170 --> 00:04:30,060 Sinun on myös oltava kunnossa kompromisseista ja tarkkuus säännöllisesti. 58 00:04:30,060 --> 00:04:36,220 Jos yrität - niin näimme säännöllinen lauseke sähköpostiosoite, 59 00:04:37,370 --> 00:04:42,590 mutta sanovat halusi tiettyyn sähköpostiosoitteeseen ja vähitellen 60 00:04:42,590 --> 00:04:48,570 säännöllinen lauseke voi tulla monimutkaisempi kuin se tarkentui. 61 00:04:49,580 --> 00:04:52,260 Niin että olisi yksi kauppa pois. 62 00:04:52,260 --> 00:04:55,330 Sinun täytyy olla varma, että olet kunnossa päätöksentekoa säännöllinen lauseke. 63 00:04:55,330 --> 00:04:57,920 Jos tiedät tarkalleen mitä olet etsimässä sitä olla järkevää 64 00:04:57,920 --> 00:05:02,070 laittaa aikaa ja kirjoittaa tehokkaampaa jäsennin. 65 00:05:02,070 --> 00:05:06,980 Ja lopuksi on historiallinen ongelma säännöllisyys 66 00:05:06,980 --> 00:05:08,940 ilmaisujen ja kielet. 67 00:05:08,940 --> 00:05:12,960 Säännölliset lausekkeet ovat todella paljon tehokkaampia kuin 68 00:05:12,960 --> 00:05:16,450 säännöllisiä lausekkeita per sanoa muodollisesti. 69 00:05:17,130 --> 00:05:20,150 >> Joten en halua mennä liian pitkälle virallista teoriaa, 70 00:05:20,150 --> 00:05:24,000 mutta useimmilla kielillä, että koodia todellisuudessa eivät ole säännöllisiä. 71 00:05:24,000 --> 00:05:29,110 Ja siksi säännöllisiä lausekkeita joskus ei katsota kaikki turvallista. 72 00:05:29,670 --> 00:05:33,150 Joten periaatteessa on Chomskyn kielten, 73 00:05:33,150 --> 00:05:38,400 ja säännöllisiä lausekkeita on rakentaa käyttämällä liitto, ketjuttamista, 74 00:05:38,400 --> 00:05:41,810 ja Kleenen tähden toimintaa että näemme muutaman minuutin. 75 00:05:43,130 --> 00:05:48,860 Jos olet kiinnostunut teoriassa on aika paljon siellä tapahtuu konepellin alle. 76 00:05:50,360 --> 00:05:55,880 >> Joten lyhyt historia - vain yhteydessä täällä - säännöllinen sarjaa tuli 77 00:05:55,880 --> 00:05:59,580 vuonna 1950, ja sen jälkeen meillä oli yksinkertainen toimittajat, jotka 78 00:05:59,580 --> 00:06:03,300 sisällytetään säännöllisiä lausekkeita - vain etsivät jousille. 79 00:06:03,570 --> 00:06:09,110 Grep - joka on komentorivi työkalu - oli yksi ensimmäisistä 80 00:06:09,110 --> 00:06:14,160 hyvin suosittuja työkaluja, jotka sisällytetään säännöllisiä lausekkeita 1960. 81 00:06:14,160 --> 00:06:20,560 80-luvulla, Perl on rakennettu - on ohjelmointikieli, joka 82 00:06:20,560 --> 00:06:24,110 sisältää säännöllisiä lausekkeita vähälle. 83 00:06:24,550 --> 00:06:30,130 Ja sitten viime aikoina meillä on ollut Perl-yhteensopiva säännöllisten lausekkeiden 84 00:06:30,130 --> 00:06:35,870 pöytäkirjojen periaatteessa muilla kielillä, jotka käyttävät paljon samaa syntaksia. 85 00:06:36,630 --> 00:06:39,840 Tietenkin tärkein tapahtuma oli vuonna 2008 86 00:06:39,840 --> 00:06:43,040 jossa oli ensimmäinen National Regular Expressions Day, 87 00:06:43,040 --> 00:06:47,350 joka mielestäni on kesäkuu 1, jos haluat juhlia sitä. 88 00:06:48,430 --> 00:06:50,840 >> Jälleen vain hieman teoriaa täällä. 89 00:06:52,180 --> 00:06:55,320 Joten on olemassa pari eri tapoja rakentaa säännöllisiä lausekkeita. 90 00:06:55,950 --> 00:07:02,050 Yksi tapa on rakentaa lauseke aiot 91 00:07:02,050 --> 00:07:07,500 ajaa merkkijono tulkita - periaatteessa rakentaa pieni mini-ohjelma, joka 92 00:07:07,500 --> 00:07:11,870 analysoi paloja merkkijono ja nähdä, "Voi, tämä sopii säännöllinen lauseke vai ei?" 93 00:07:12,250 --> 00:07:14,250 Ja sitten ajaa sitä. 94 00:07:14,250 --> 00:07:17,300 Joten jos sinulla on hyvin pieni säännöllinen lauseke, tämä on luultavasti 95 00:07:17,300 --> 00:07:19,380 tehokkain tapa tehdä se. 96 00:07:20,090 --> 00:07:25,420 Ja sitten jos - toinen vaihtoehto on pitää jälleenrakentamista 97 00:07:25,420 --> 00:07:30,260 ilmaisun kuten mennä, ja että on simuloida mahdollisuus. 98 00:07:30,440 --> 00:07:37,690 Ja nämä Ensimmäisissä säännöllinen lauseke algoritmit 99 00:07:37,690 --> 00:07:44,330 suhteellisen yksinkertainen ja suhteellisen nopeasti, mutta ei ole paljon joustavuutta. 100 00:07:44,330 --> 00:07:47,500 Joten tehdä vielä joitakin asioita, että olemme menossa katsomaan 101 00:07:47,500 --> 00:07:52,860 Tänään olemme joutuneet tekemään monimutkaisempia säännöllinen lauseke 102 00:07:52,860 --> 00:07:56,650 toteutukset ovat potentiaalisesti paljon hitaampi, niin että on jotain mielessä 103 00:07:57,510 --> 00:08:02,920 Mukana on myös säännöllisiä lausekkeita kieltäminen hyökkäys erilaisia 104 00:08:02,920 --> 00:08:08,330 että hyödynnetään näitä uudempia toteutuksia 105 00:08:08,330 --> 00:08:10,930 säännöllisiä lausekkeita tulla hyvin monimutkainen. 106 00:08:11,570 --> 00:08:15,650 Ja paljon samassa mielessä kuin näimme puskurin ylivuoto hyökkäyksiä, 107 00:08:15,650 --> 00:08:21,610 sinulla on hyökkäyksiä, jotka toimivat tekemällä rekursiivinen silmukoita 108 00:08:21,610 --> 00:08:24,400 ylitys kapasiteetti muistia. 109 00:08:24,780 --> 00:08:29,540 Ja muuten Regexen on yksi virallisista taivutusmuodot säännöllisen lausekkeen 110 00:08:29,540 --> 00:08:32,890 vastaavasti härkien anglosaksisen. 111 00:08:33,500 --> 00:08:40,169 >> Okei, joten Python kirjasto monet teistä täällä henkilö on Macit, 112 00:08:40,169 --> 00:08:43,860 joten voit itse vetää tämän ylös näytön. 113 00:08:43,860 --> 00:08:47,480 Säännölliset lausekkeet on rakennettu Python. 114 00:08:48,070 --> 00:08:53,020 Ja niin Python on esiasennettu Mac ja myös verkossa tästä linkistä. 115 00:08:53,770 --> 00:08:57,350 Joten jos olet katsomassa voit keskeyttää ja varmista, että sinulla on Python 116 00:08:58,080 --> 00:09:00,170 niin soitamme täällä. 117 00:09:00,780 --> 00:09:06,420 On käsikirja verkossa, joten jos vain kirjoittaa Python tietokoneeseen 118 00:09:06,420 --> 00:09:10,500 huomaatte, että versio tulee esille terminaaliin. 119 00:09:11,070 --> 00:09:17,720 Olen siis jos linkki käsikirjan versio 2 Python sekä lunttilappua. 120 00:09:17,720 --> 00:09:23,100 On Version 3 Python, mutta Mac ei välttämättä 121 00:09:23,100 --> 00:09:25,130 mukana, että esiasennettu. 122 00:09:25,130 --> 00:09:27,360 Joten ei ole kovin erilainen. 123 00:09:27,360 --> 00:09:33,270 Okei, joten joitakin perusasioita käyttäen säännöllisiä lausekkeita Python. 124 00:09:34,080 --> 00:09:42,650 >> Joten tässä käytin hyvin yksinkertainen ilme, joten tein Python tuonti uudelleen 125 00:09:43,750 --> 00:09:47,070 ja sitten otti tulos re.search. 126 00:09:47,070 --> 00:09:49,910 Ja haku kestää 2 argumentteja. 127 00:09:49,910 --> 00:09:56,040 Ensimmäinen on säännöllinen lauseke, ja toinen on teksti 128 00:09:56,040 --> 00:09:58,290 tai merkkijono haluat analysoida. 129 00:09:58,290 --> 00:10:01,210 Ja sitten tulostaa result.group. 130 00:10:01,580 --> 00:10:05,860 Nämä ovat siis 2 perustoiminnot aiomme nähdä tänään 131 00:10:06,790 --> 00:10:10,170 oppimaan säännöllisiä lausekkeita. 132 00:10:10,170 --> 00:10:12,880 Joten Jakaessaan säännöllinen lauseke täällä 133 00:10:12,880 --> 00:10:21,770 h ja sitten \ w ja m niin \ w vain ottaa mitään kirjainmerkki siellä. 134 00:10:21,850 --> 00:10:26,820 Joten tässä etsimme "h" ja sitten toinen kirjainmerkki 135 00:10:26,820 --> 00:10:30,060 ja sitten m, joten tässä että sopisi kinkkua 136 00:10:30,060 --> 00:10:34,480 in, "Abraham Lincoln ja kinkkua voileipiä." 137 00:10:35,040 --> 00:10:37,150 Tämä on seurausta kyseisen ryhmän. 138 00:10:37,680 --> 00:10:43,130 Toinen asia, että voimme tehdä, on käyttää ennen jouset tekstiä Python. 139 00:10:43,130 --> 00:10:46,220 Joten kai aion mennä eteenpäin ja vedä, että täällä. 140 00:10:46,220 --> 00:10:49,210 Python tuonti uudelleen. 141 00:10:50,070 --> 00:10:54,000 Ja jos tekisin saman - sanokaamme teksti on, 142 00:10:55,390 --> 00:11:00,800 "Abraham," meidän suurentaa - sinne siis. 143 00:11:01,610 --> 00:11:06,430 Teksti on "Abraham syö kinkkua." 144 00:11:07,460 --> 00:11:15,260 Okei, ja sitten tulos = re.search. 145 00:11:16,260 --> 00:11:22,020 Ja sitten meidän ilmaisu voi olla h, ja niin aion tehdä piste m. 146 00:11:22,020 --> 00:11:26,280 Joten piste vie tahansa merkki, joka ei ole uuden linjan mukaan lukien lukumäärät, 147 00:11:26,280 --> 00:11:28,650 prosenttiosuus merkkejä, jotain sellaista. 148 00:11:28,650 --> 00:11:38,030 Ja sitten teksti - puomi - ja sitten result.group--joo. 149 00:11:38,030 --> 00:11:41,820 Niin, että on kuinka tehdä perus-toiminnallisuus täällä. 150 00:11:42,300 --> 00:11:55,110 Jos meillä olisi teksti rengas, joka - se hullu teksti - mukana sanoa paljon takaisin viiltää 151 00:11:55,110 --> 00:12:01,180 ja jousille sisällä ja asioita, jotka voisi näyttää tilanvaihdot, 152 00:12:01,180 --> 00:12:08,480 sitten luultavasti halua käyttää raaka tekstinsyöttöä varmistaa, että hyväksytään. 153 00:12:08,480 --> 00:12:14,120 Ja se vain näyttää, että. 154 00:12:14,120 --> 00:12:17,810 Joten jos etsimme kullekin niistä on meidän ei pitäisi löytyä mitään. 155 00:12:19,070 --> 00:12:21,680 Mutta se on miten sen toteuttaisi, juuri ennen merkkijono 156 00:12:21,680 --> 00:12:24,990 säännöllinen lauseke laitat r-kirjain. 157 00:12:26,150 --> 00:12:30,260 >> Okei, joten meidän pitää käynnissä. 158 00:12:30,260 --> 00:12:33,730 Okei - niin Katsokaamme pari toistuvia kuvioita täällä. 159 00:12:34,750 --> 00:12:39,150 Niin yksi asia, jonka haluat tehdä, on toistaa asioita 160 00:12:40,040 --> 00:12:42,480 kun etsivät tekstin läpi. 161 00:12:42,480 --> 00:12:48,300 Joten tehdä seuraa niin monta b - teet ab *. 162 00:12:48,630 --> 00:12:51,620 Ja sitten on joukko muita sääntöjä liikaa. 163 00:12:51,620 --> 00:12:54,380 Ja voit katsoa kaikki nämä ylös, minä vain ajaa läpi joitakin 164 00:12:54,380 --> 00:12:57,630 yleisimmin käytetty niistä. 165 00:12:57,630 --> 00:13:03,920 Joten ab + on seuraa mitään N suurempi kuin 0 b. 166 00:13:04,510 --> 00:13:08,000 ab? on sen jälkeen 0 tai 1 b. 167 00:13:09,190 --> 00:13:18,580 ab {N} on sen jälkeen N b, jälkeen ja niin edelleen. 168 00:13:18,580 --> 00:13:22,820 Jos sinulla on 2 numeroa aaltosulkeiden olet määritellään alue 169 00:13:23,300 --> 00:13:25,440 joka voi olla mahdollisesti sovitettu. 170 00:13:26,390 --> 00:13:30,420 Joten me tarkastelemme enemmän pari toistuvia kuvioita minuutin. 171 00:13:31,960 --> 00:13:42,300 Joten 2 asioita pitää mielessä, kun käytät näitä kaavoja työkaluja täällä. 172 00:13:42,300 --> 00:13:52,120 Joten sanoa haluamme tarkastella HM, "Abraham Lincoln tekee kinkkua voileipiä." 173 00:13:52,120 --> 00:13:55,230 Joten vaihdoin Abraham Lincolnin nimen Abraham. 174 00:13:55,230 --> 00:14:00,290 Ja nyt etsimme mitä palautetaan tämän hakutoiminto, 175 00:14:00,290 --> 00:14:03,270 ja se palauttaa vain kinkkua tässä tapauksessa. 176 00:14:03,620 --> 00:14:08,080 Ja se, että koska haku vain luonnollisesti vie eniten vasemmalla jono. 177 00:14:08,080 --> 00:14:12,130 Ja kaikki säännöllisiä lausekkeita ellet muuta tekee sen. 178 00:14:12,830 --> 00:14:18,880 Jos halusimme löytää kaikki on toiminto, joka - löytää kaikki. 179 00:14:18,880 --> 00:14:35,100 Niin, että voisi vain näyttää kaikki = re.findall (h.m ", teksti) 180 00:14:35,100 --> 00:14:44,540 ja sitten all.group (). 181 00:14:44,540 --> 00:14:51,040 Kaikki tuottaa sekä kinkkua ja kinkkua, tässä tapauksessa molemmat jousille Abraham kunkin kinkkua. 182 00:14:51,610 --> 00:14:55,110 Niin, että on toinen vaihtoehto. 183 00:14:56,250 --> 00:15:06,940 >> Suuri. Toinen asia pitää mielessä on, että säännöllisiä lausekkeita ottaa suurin intuitiivisesti. 184 00:15:06,940 --> 00:15:09,520 Katsokaamme tätä esimerkkiä. 185 00:15:10,200 --> 00:15:16,070 Teimme että eniten vasemmalla täältä, ja sitten yritin suurempi haku 186 00:15:16,070 --> 00:15:18,800 käyttäen Kleenen tähden operaattori. 187 00:15:18,800 --> 00:15:24,180 Joten, "Abraham Lincoln tekee kinkkua voileipiä," ja minä vain sai takaisin 188 00:15:24,180 --> 00:15:26,280 m seurauksena. 189 00:15:26,280 --> 00:15:31,670 Syynä tähän virhe oli, että olisin voinut ottaa minkä tahansa määrän 190 00:15:31,670 --> 00:15:36,140 h on koska en määritä mitään mennä välillä h ja m. 191 00:15:36,140 --> 00:15:42,010 Ainoa esimerkki on, että oli m - vain esimerkkejä siellä m sen 192 00:15:42,010 --> 00:15:46,220 ja rajoittamattoman määrän h: n oli vain merkkijono m. 193 00:15:46,490 --> 00:15:51,850 Sitten yritin uudestaan, sanoin, "Okei, jatkakaamme todellinen suurin ryhmä täällä." 194 00:15:51,850 --> 00:15:59,670 Ja sitten tein h.. * M, joten palaa aivan mitä tahansa merkkejä välillä h ja m. 195 00:16:00,280 --> 00:16:02,950 Ja jos olet lähtemässä pois ja ajatella, "Oh, okei, hyvin tämä 196 00:16:02,950 --> 00:16:11,560 saada minut kinkkua, "se todella vie kaiken h Abraham Lincoln 197 00:16:11,560 --> 00:16:13,690 kaikki tavalla jopa loppuun kinkkua. 198 00:16:14,040 --> 00:16:18,110 Se on ahne, se näkee h - kaikki tämä muu teksti - m, 199 00:16:18,110 --> 00:16:21,280 ja että on mitä se tekee sisään 200 00:16:22,060 --> 00:16:27,480 Tämä on erityisen törkeä - tämä on ominaisuus voimme myös 201 00:16:27,480 --> 00:16:30,670 täsmennettävä se ei ole ahne käyttää muita toimintoja. 202 00:16:31,480 --> 00:16:34,490 Mutta tämä on jotain meidän on pidettävä mielessä erityisesti 203 00:16:34,490 --> 00:16:38,720 kun tarkastellaan HTML tekstiä, mikä on yksi syy, että 204 00:16:38,720 --> 00:16:41,500 säännöllisiä lausekkeita ovat vaikeita HTML. 205 00:16:42,460 --> 00:16:46,310 Koska jos sinulla on HTML avoin koodi ja sitten paljon tavaraa keskellä 206 00:16:46,310 --> 00:16:49,820 ja sitten jotkut muut HTML suljettu tag paljon myöhemmin ohjelmassa, 207 00:16:49,820 --> 00:16:55,420 olet juuri syönyt paljon html-koodiin mahdollisesti vahingossa. 208 00:16:56,200 --> 00:17:01,840 >> Okei - niin enemmän erikoismerkkejä, kuten monet muut kielet, 209 00:17:01,840 --> 00:17:04,780 me voimme päästä pakoon käyttäen slash. 210 00:17:04,780 --> 00:17:10,329 Joten voimme käyttää piste määrittää minkä tahansa merkin paitsi uuden linjan. 211 00:17:10,329 --> 00:17:14,550 Voimme käyttää paeta w mahdolliset kirjainmerkki. 212 00:17:14,550 --> 00:17:20,329 Ja vastaavasti paeta d tahansa kokonaisluku - numeerinen luonnetta. 213 00:17:20,630 --> 00:17:27,440 Voimme määritellä - voimme käyttää suluissa määrittää liittyviä ilmaisuja. 214 00:17:27,440 --> 00:17:30,970 Joten tämä hyväksyisi, b tai c. 215 00:17:31,320 --> 00:17:37,000 Ja voimme myös määrittää tai vaihtoehtoja joko a tai b. 216 00:17:37,000 --> 00:17:41,110 Esimerkiksi - jos etsimme useita mahdollisuuksia 217 00:17:41,110 --> 00:17:44,940 Suluissa voisimme käyttää tai operaattori kuten - 218 00:17:44,940 --> 00:17:52,480 joten palatkaamme tähän esimerkki tästä. 219 00:17:53,000 --> 00:17:59,790 Ja nyt ottakaamme - palatkaamme tähän esimerkki tästä, ja sitten 220 00:17:59,790 --> 00:18:12,290 ottaa ae - niin tämän pitäisi palata - Kai tämä on vielä Abraham. 221 00:18:12,290 --> 00:18:17,410 Joten tämä - jos teemme kaiken - suuri. 222 00:18:17,410 --> 00:18:22,700 Olkaamme siis päivittää tekstiä täällä. 223 00:18:22,700 --> 00:18:34,690 "Abraham syö kinkkua kun Hemming hänen - kun Hemming." Suuri. 224 00:18:44,090 --> 00:18:47,330 Kaikki. Suuri. Nyt saamme kinkkua, kinkkua, ja helmassa. 225 00:18:48,510 --> 00:18:59,370 Vaikka hemming - vaikka hyräillä hänelle - vaikka hyräillä helmaan häntä. Suuri. 226 00:19:00,350 --> 00:19:03,250 Sama juttu. 227 00:19:03,820 --> 00:19:09,180 Nyt kaikki palaa edelleen vain kinkkua, kinkkua, ja helmassa ilman poimien humina tai häntä. 228 00:19:09,940 --> 00:19:22,600 Suuri - niin mitä jos halusimme katsoa, ​​että joko - jotta voisimme myös tehdä 229 00:19:23,510 --> 00:19:33,810 häntä tai - palaamme siihen. 230 00:19:34,810 --> 00:19:45,760 Okei - niin - kaikki hyvin - tehtävissä voit käyttää myös järjestelmäkohdistimen tai dollarin merkki 231 00:19:45,760 --> 00:19:49,350 täsmentää, että etsit jotain alussa tai lopussa merkkijono. 232 00:19:50,260 --> 00:19:52,260 Tai alussa tai lopussa sanan. 233 00:19:52,400 --> 00:19:54,470 Tämä on yksi tapa käyttää sitä. 234 00:19:55,630 --> 00:20:01,160 >> Okei - niin olkaamme leikkiä hieman suurempi tekstialue. 235 00:20:03,950 --> 00:20:08,310 Sanokaamme tämä rivi täällä - tämä lausuma täällä. 236 00:20:08,310 --> 00:20:11,360 Voima säännöllinen lauseke on, että ne voidaan määrittää malleja 237 00:20:11,360 --> 00:20:13,390 ei vain kiinteä merkkiä. 238 00:20:14,900 --> 00:20:18,790 Tehkäämme - kutsukaamme tämän lohkon. 239 00:20:22,400 --> 00:20:27,110 Silloin saamme lukea kaikki, että sisään 240 00:20:28,890 --> 00:20:50,820 Ja sitten on - tehkäämme kaikki =, niin mitkä ovat asioita, että voisimme etsiä täällä kannattavasti? 241 00:20:50,820 --> 00:20:54,070 Voisimme etsiä ilmaisua korvaan. 242 00:20:55,050 --> 00:21:01,520 Ei kovin mielenkiintoinen. Miten olisi? Saa nähdä mitä tapahtuu. 243 00:21:03,710 --> 00:21:05,710 Annoin sen ongelma. 244 00:21:06,380 --> 00:21:10,750 Joten mikä tahansa joukko asioita ennen uudelleen ja kaikki. 245 00:21:10,750 --> 00:21:15,630 Niin, että pitäisi palata kaiken alusta asti kaikki uudelleen ehkä pari kertaa. 246 00:21:18,800 --> 00:21:21,970 Ja sitten täällä on voima säännöllisiä lausekkeita on, että ne 247 00:21:21,970 --> 00:21:24,900 voidaan määrittää malleja ei vain merkkejä tästä ovat. 248 00:21:24,900 --> 00:21:28,510 Joten kaikki tavalla jopa lopulliseen uudelleen, se alkoi vasemmalta eniten ja oli ahne. 249 00:21:30,710 --> 00:21:32,710 Katsokaamme - mitä muuta voisimme etsiä. 250 00:21:32,710 --> 00:21:39,860 Oletan, yksi asia, jos olisit kiinnostunut etsivät pronominit hän ja hän, 251 00:21:39,860 --> 00:21:44,600 voisit tarkistaa s on 0 tai 1. 252 00:21:44,600 --> 00:21:49,710 ja ilmaisun hän, ja se on todennäköisesti aio palata - 253 00:21:49,710 --> 00:21:58,020 oh, kai se palasi hän koska etsimme voima, joka päivä, täällä. 254 00:22:00,590 --> 00:22:06,270 Pyrkikäämme täsmensi, että tämän on tultava alussa jotain. 255 00:22:06,640 --> 00:22:09,530 Katsokaamme, jos putoaa. 256 00:22:09,530 --> 00:22:19,630 Joten voimme tehdä rasvaa, ja siellä emme saa mitään, koska hän ja hän 257 00:22:19,630 --> 00:22:22,870 eivät esiinny tämän lauseen. 258 00:22:24,960 --> 00:22:30,410 Suuri. Okei - niin takaisin kissa täällä. 259 00:22:30,410 --> 00:22:35,720 Niin monimutkaisia ​​kuvioita vahingoittaa aivoja. 260 00:22:35,720 --> 00:22:40,500 Joten siksi käytämme säännöllisiä lausekkeita välttää näitä kysymyksiä. 261 00:22:40,820 --> 00:22:43,520 >> Joten tässä on joitakin muita hyödyllisiä tiloja voit leikkiä. 262 00:22:43,520 --> 00:22:50,290 Me katsoimme haku tänään, mutta voit käyttää myös ottelu, split, findall, ja ryhmät. 263 00:22:50,290 --> 00:22:53,970 Joten muita hienoja asioita voit tehdä säännöllisiä lausekkeita lisäksi vain 264 00:22:53,970 --> 00:22:58,870 etsivät malleja on ryhtynyt kuvio ja pitämällä kaikki ottelut - 265 00:22:58,870 --> 00:23:02,530 muuttujat - ja sitten käyttää niitä oman koodin myöhemmin. 266 00:23:02,850 --> 00:23:05,980 Se voi olla varsin hyödyllistä. Muut asiat saattavat laskea. 267 00:23:05,980 --> 00:23:11,720 Joten voimme luottaa määrän kopioita mainittu merkkijono, 268 00:23:11,720 --> 00:23:13,960 ja sitähän voimme käyttää ryhmiä. 269 00:23:13,960 --> 00:23:17,550 Ja muut tilat sekä ovat myös mahdollisia. 270 00:23:18,040 --> 00:23:22,980 Joten haluan vain puhua vähän enemmän muita tapoja voit käyttää säännöllisiä lausekkeita. 271 00:23:22,980 --> 00:23:29,100 >> Joten yksi edistyksellinen sovellus on sumeaa hakua. 272 00:23:29,100 --> 00:23:33,450 Joten jos etsit tekstin ilmaisua, Julius Caesar, 273 00:23:33,450 --> 00:23:37,740 ja näet joko Gaius Julius Caesar tai nimi Julius Caesar muilla kielillä, 274 00:23:37,740 --> 00:23:44,400 niin ehkä myös haluat määrittää painoa näitä arvoja. 275 00:23:44,400 --> 00:23:48,930 Ja jos se on tarpeeksi lähellä - jos se ylittää tietyn kynnyksen - niin haluat 276 00:23:48,930 --> 00:23:50,860 pystyä hyväksymään Julius Caesar. 277 00:23:50,860 --> 00:24:00,580 Joten on olemassa pari eri toteutuksia, että muutamia muita kieliä kuin hyvin. 278 00:24:02,580 --> 00:24:08,420 Tässä muutamia muita työkaluja, Regex Pal - kätevä sovellus verkossa 279 00:24:08,420 --> 00:24:12,190 tarkistaa, onko säännöllisiä lausekkeita koostuvat oikein. 280 00:24:12,190 --> 00:24:18,500 On myös erillistyökalut, että voit alkaa työpöydällesi 281 00:24:18,500 --> 00:24:22,100 kuten Ultra Pico, ja sekä juuri keittokirjoja. 282 00:24:22,100 --> 00:24:25,410 Joten jos olet tekemässä projekti, johon ton säännöllisiä lausekkeita 283 00:24:25,410 --> 00:24:29,810 tämä on luultavasti paikka mennä ulkopuolella tänään. 284 00:24:31,520 --> 00:24:35,770 Ja sitten vain antaa sinulle käsityksen siitä, miten yhteistä se on 285 00:24:35,770 --> 00:24:44,090 on grep Unix-, Perl on sisäänrakennettu, ja C on PCRE for C. 286 00:24:44,090 --> 00:24:48,890 Ja sitten kaikki nämä muut kielet on myös säännöllinen lauseke paketit 287 00:24:48,890 --> 00:24:52,020 jotka toimivat periaatteessa samaa syntaksia saimme maistaa tänään. 288 00:24:52,020 --> 00:24:54,790 PHP, Java, Ruby, ja niin edelleen. 289 00:24:56,080 --> 00:24:58,980 >> Google Code Search on todella syytä mainita, se on yksi 290 00:24:58,980 --> 00:25:05,720 suhteellisen vähän hakemuksia siellä, että kansalaiset voivat käyttää 291 00:25:05,720 --> 00:25:07,800 sen tietokantaan käyttäen säännöllisiä lausekkeita. 292 00:25:07,800 --> 00:25:12,920 Joten jos näytät Google Code Search löydät koodin 293 00:25:12,920 --> 00:25:16,880 jos etsit esimerkiksi siitä, kuinka toiminto voidaan käyttää, 294 00:25:16,880 --> 00:25:21,610 voit käyttää säännöllinen lauseke löytää, että toimintoa käytetään kaikenlaisia ​​erilaisia ​​tapauksia. 295 00:25:21,610 --> 00:25:28,000 Voisit etsiä fwrite, ja sitten voit etsiä lipun kirjoittaa tai lukea 296 00:25:28,000 --> 00:25:32,000 jos halusi esimerkki fwrite käytetään tällöin. 297 00:25:33,530 --> 00:25:37,010 Joten sama asia siellä, ja tässä on joitakin viittauksia. 298 00:25:37,010 --> 00:25:40,990 Tämä on saatavilla verkossa samoin, niin menee eteenpäin, jos 299 00:25:40,990 --> 00:25:45,560 haluat tarkastella Python, grep, Perl - haluat vain saada inspiraatiota 300 00:25:45,560 --> 00:25:50,650 tai jos haluat näyttää enemmän teorian tässä on muutamia hyviä hyppäämällä paikkoja. 301 00:25:50,650 --> 00:25:53,870 Paljon kiitoksia. 302 00:25:58,470 --> 00:25:59,910 [CS50.TV]