1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminar: Pattern Matching Regulaaravaldised] 2 00:00:02,000 --> 00:00:04,000 [John Mussman-Harvard University] 3 00:00:04,000 --> 00:00:07,220 [See on CS50.-CS50.TV] 4 00:00:07,780 --> 00:00:11,610 Okei. Noh, tere tulemast kõigile. See on CS50 2012. 5 00:00:11,780 --> 00:00:16,610 Minu nimi on John ja ma siis räägime täna regulaaravaldiste. 6 00:00:16,610 --> 00:00:22,530 Regulaaravaldisi on eelkõige vahend, kuid mõnikord ka kasutatud 7 00:00:22,530 --> 00:00:28,650 koodi aktiivselt sisuliselt mustrina ja stringe. 8 00:00:28,650 --> 00:00:33,800 Nii et siin on web comic XKCD. 9 00:00:34,440 --> 00:00:42,370 In koomiline on müsteerium, kui tapja on 10 00:00:42,370 --> 00:00:47,860 millele keegi puhkusel ja peategelased on 11 00:00:47,860 --> 00:00:52,500 Otsige 200 megabaiti e-kirju otsivad aadress. 12 00:00:52,500 --> 00:00:56,090 Ja nad on umbes loobuma, kui keegi, kes teab, regulaaravaldiste - 13 00:00:56,090 --> 00:01:00,550 arvatavasti superkangelane - swoops maha ja kirjutab mõned kood 14 00:01:00,550 --> 00:01:02,970 ja lahendab müsteerium. 15 00:01:02,970 --> 00:01:07,370 Nii ilmselt, et on midagi, mida saab anda volitused teha 16 00:01:07,370 --> 00:01:09,370 pärast seda seminar. 17 00:01:09,370 --> 00:01:12,250 Me lihtsalt läheb annavad põhjaliku sissejuhatuse keel 18 00:01:12,250 --> 00:01:16,770 ja annab sulle piisavalt teabeta minna pärast rohkem ressursse oma. 19 00:01:17,680 --> 00:01:21,700 >> Nii regulaaravaldiste vaadata põhimõtteliselt niimoodi. 20 00:01:22,930 --> 00:01:25,550 See on regulaaravaldise Ruby. 21 00:01:25,550 --> 00:01:29,280 See ei ole väga erinev üle keelte. 22 00:01:29,690 --> 00:01:37,630 Peame lihtsalt edasi kaldkriipsud alustada ja tähistada regulaaravaldise Ruby. 23 00:01:37,630 --> 00:01:42,880 Ja see on regulaaravaldis otsima email muster. 24 00:01:42,880 --> 00:01:49,160 Nii näeme esimese natuke välja iga tähtnumbriline märk. 25 00:01:50,500 --> 00:01:54,880 Seda seetõttu, et e-posti aadressid on sageli alustada tähemärk. 26 00:01:55,460 --> 00:01:59,330 Ja siis mõni erimärk järgneb @ sümbol. 27 00:01:59,330 --> 00:02:03,260 Ja siis sama domeeninime. 28 00:02:03,260 --> 00:02:10,030 Ja siis 2 kuni 4 märki otsima. Com,. Net, ja nii edasi. 29 00:02:10,850 --> 00:02:13,200 Nii et on veel üks näide regulaaravaldis. 30 00:02:13,200 --> 00:02:17,270 Nii Regulaaravaldisi protokollide leidmiseks patters teksti. 31 00:02:17,270 --> 00:02:21,130 Nad teevad võrdlusi, valikud ja asendused. 32 00:02:21,690 --> 00:02:27,970 Nii Kolmas näide on leida kõik telefoninumbrid lõpeb 54 kataloogi. 33 00:02:27,970 --> 00:02:34,360 Nii et enne David rebib up CS50 kataloog võiksime otsida 34 00:02:34,360 --> 00:02:40,450 muster, kus meil on sulgudes, siis 3 arvu siis lõpuks sulgudes 35 00:02:40,450 --> 00:02:44,070 3 rohkem numbreid, kriips, 2 numbrit, seejärel 54. 36 00:02:44,070 --> 00:02:48,310 Ja see oleks sisuliselt kuidas me tulla regulaaravaldis otsida seda. 37 00:02:49,150 --> 00:02:52,960 >> Seega on olemas - me oleme teinud mõningaid asju CS50, mis on natuke nagu 38 00:02:52,960 --> 00:02:59,740 regulaaravaldiste, et - näiteks - on dictionary.C fail 39 00:02:59,740 --> 00:03:04,720 jaoks õigekirja kontroll lahendamist, mida olete kasutanud fscanf 40 00:03:04,720 --> 00:03:07,930 lugeda sõna sõnaraamatust. 41 00:03:07,930 --> 00:03:16,240 Ja näete protsent 45s otsib string 45 tähemärki. 42 00:03:16,240 --> 00:03:20,020 Nii et see on pisut nagu algeline regulaaravaldis. 43 00:03:21,150 --> 00:03:26,060 Ja sul võib olla iga 45 märki, mis sobivad arve seal 44 00:03:26,060 --> 00:03:28,080 ja korja need üles. 45 00:03:28,080 --> 00:03:33,480 Ja siis teine ​​näide viimaste veebi programmeerimine probleem 46 00:03:33,480 --> 00:03:40,760 sätestatud distro kood php me tegelikult teha on lihtne regulaaravaldis. 47 00:03:40,760 --> 00:03:46,790 Ja see on vaid lihtsalt otsivad kontrollida, kas veebileht, mis on vastu võetud 48 00:03:46,790 --> 00:03:51,940 sobib kas login või logout registreeru. PHP. 49 00:03:52,220 --> 00:03:57,910 Ja siis jälle õige või vale põhineb sellel regulaaravaldise sobitamine. 50 00:03:59,400 --> 00:04:01,740 >> Nii et kui te kasutate regulaaravaldis? 51 00:04:01,740 --> 00:04:04,820 Miks sa siin oled täna? 52 00:04:05,330 --> 00:04:08,480 Nii et sa ei taha kasutada regulaaravaldiste, kui seal on midagi, mis 53 00:04:08,480 --> 00:04:11,640 ei töö teile isegi kergemini. 54 00:04:11,640 --> 00:04:15,510 Nii XML ja HTML on tegelikult üsna keeruline 55 00:04:15,510 --> 00:04:18,480 kirjutada regulaaravaldise kui näeme natuke. 56 00:04:19,110 --> 00:04:23,280 Seega on pühendatud parsereid nendest keeltest. 57 00:04:24,170 --> 00:04:30,060 Samuti peate olema okei kompromisse ja täpsus sageli. 58 00:04:30,060 --> 00:04:36,220 Kui sa üritad - nii nägime regulaaravaldis e-posti aadress, 59 00:04:37,370 --> 00:04:42,590 kuid öelda tahtsid konkreetse e-posti aadress ja järk-järgult 60 00:04:42,590 --> 00:04:48,570 regulaaravaldis võib muutuda keerulisemaks, kuna see sai täpsemaks. 61 00:04:49,580 --> 00:04:52,260 Nii et oleks üks kompromiss. 62 00:04:52,260 --> 00:04:55,330 Sa pead olema kindel, et teil on kõik korras tegemises regulaaravaldise. 63 00:04:55,330 --> 00:04:57,920 Kui tead täpselt, mida te otsite siis võib mõttekam 64 00:04:57,920 --> 00:05:02,070 et panna aega ja kirjutada tõhusam parser. 65 00:05:02,070 --> 00:05:06,980 Ja lõpuks on ajalooline küsimus korrektsuse 66 00:05:06,980 --> 00:05:08,940 väljendite ja keeltes. 67 00:05:08,940 --> 00:05:12,960 Regulaaravaldisi tegelikult palju võimsam kui 68 00:05:12,960 --> 00:05:16,450 regulaaravaldiste kohta öelda formaalses mõttes. 69 00:05:17,130 --> 00:05:20,150 >> Nii et ma ei taha minna liiga kaugele ametliku teooria, 70 00:05:20,150 --> 00:05:24,000 kuid enamik keeli et me koodi tegelikult ei ole korrektsed. 71 00:05:24,000 --> 00:05:29,110 Ja see on põhjus, miks regulaaravaldiste mõnikord ei peeta kõik, et turvaline. 72 00:05:29,670 --> 00:05:33,150 Nii et põhimõtteliselt on Chomsky hierarhia keeles 73 00:05:33,150 --> 00:05:38,400 ja regulaaravaldiste on ehitada kasutades Liit ahel, 74 00:05:38,400 --> 00:05:41,810 ja Kleene star operatsiooni, et me näeme mõne minuti. 75 00:05:43,130 --> 00:05:48,860 Kui olete huvitatud teooria on üsna palju toimub seal kapoti all. 76 00:05:50,360 --> 00:05:55,880 >> Nii lühike ajalugu - just seoses siin - regulaarne komplekti tulid 77 00:05:55,880 --> 00:05:59,580 1950 ja siis oli meil lihtne toimetajad, et 78 00:05:59,580 --> 00:06:03,300 lisatud regulaaravaldiste - lihtsalt otsivad stringe. 79 00:06:03,570 --> 00:06:09,110 Grep - mis on käsurea vahend - oli üks esimesi 80 00:06:09,110 --> 00:06:14,160 väga populaarne tööriistu, mis sisalduvad regulaaravaldiste 1960. 81 00:06:14,160 --> 00:06:20,560 80-ndatel, Perl ehitati - on programmeerimiskeel, mis 82 00:06:20,560 --> 00:06:24,110 sisaldab regulaaravaldiste väga nähtavalt. 83 00:06:24,550 --> 00:06:30,130 Ja siis veel viimasel ajal oleme olnud Perl sobib regulaaravaldis 84 00:06:30,130 --> 00:06:35,870 protokollid põhiliselt teistes keeltes, mis kasutavad palju sama süntaksit. 85 00:06:36,630 --> 00:06:39,840 Muidugi kõige olulisem sündmus oli 2008 86 00:06:39,840 --> 00:06:43,040 kus oli esimene riiklik Regulaaravaldised Day, 87 00:06:43,040 --> 00:06:47,350 mis minu arvates on 1. juuni, kui soovite, et tähistada. 88 00:06:48,430 --> 00:06:50,840 >> Jällegi, lihtsalt natuke rohkem teooria siin. 89 00:06:52,180 --> 00:06:55,320 Seega on paar erinevat võimalust ehitamise regulaaravaldiste. 90 00:06:55,950 --> 00:07:02,050 Üks lihtne viis on ehitada väljend, et te ei kavatse 91 00:07:02,050 --> 00:07:07,500 sõitma string tõlgendama - põhimõtteliselt ehitada väike mini-programm, mis 92 00:07:07,500 --> 00:07:11,870 analüüsib tükki string ja vaata, "Oh, kas see sobib regulaaravaldis või mitte?" 93 00:07:12,250 --> 00:07:14,250 Ja seejärel käivitage see. 94 00:07:14,250 --> 00:07:17,300 Nii et kui teil on väga väike regulaaravaldise, on see tõenäoliselt 95 00:07:17,300 --> 00:07:19,380 Kõige tõhusam viis seda teha. 96 00:07:20,090 --> 00:07:25,420 Ja siis, kui sa - teine ​​võimalus on hoida rekonstrueerimiseks 97 00:07:25,420 --> 00:07:30,260 väljend lähete ja see on simuleerida võimalus. 98 00:07:30,440 --> 00:07:37,690 Ja need varased katsed regulaaravaldise algoritmid 99 00:07:37,690 --> 00:07:44,330 suhteliselt lihtne ja suhteliselt kiire, kuid ei olnud palju paindlikkust. 100 00:07:44,330 --> 00:07:47,500 Niisiis, mida teha isegi mõned asjad, mida me ei kavatse vaadata 101 00:07:47,500 --> 00:07:52,860 täna oleme pidanud tegema keerulisem regulaaravaldis 102 00:07:52,860 --> 00:07:56,650 rakendusi, mis on potentsiaalselt palju aeglasem, nii et see on midagi meeles pidada 103 00:07:57,510 --> 00:08:02,920 Seal on ka regulaaravaldiste keelamise rünnak erinevaid 104 00:08:02,920 --> 00:08:08,330 et kasutada ära nende uuemate rakendustega 105 00:08:08,330 --> 00:08:10,930 regulaaravaldiste muutunud väga keeruliseks. 106 00:08:11,570 --> 00:08:15,650 Ja sama palju tunde, et me nägime buffer overflow rünnakud, 107 00:08:15,650 --> 00:08:21,610 teil on rünnakute et tööd tehes rekursiivne silmuseid, mis 108 00:08:21,610 --> 00:08:24,400 ületatud mälumahuga. 109 00:08:24,780 --> 00:08:29,540 Ja muide Regexen on üks ametlik mitmus regulaaravaldise 110 00:08:29,540 --> 00:08:32,890 analoogia härjad on anglosaksi. 111 00:08:33,500 --> 00:08:40,169 >> Okei, nii et Python Library paljud teist siin isiklikult on Mac, 112 00:08:40,169 --> 00:08:43,860 nii et saate tegelikult tõmmake see üles ekraanil. 113 00:08:43,860 --> 00:08:47,480 Regulaaravaldisi ehitatud Python. 114 00:08:48,070 --> 00:08:53,020 Ja nii Python on eelsalvestatud Mac ja saadaval ka internetis aadressil seda linki. 115 00:08:53,770 --> 00:08:57,350 Nii et kui sa vaatad saate peatada ja veenduge, et olete Python 116 00:08:58,080 --> 00:09:00,170 kui me mängime siin. 117 00:09:00,780 --> 00:09:06,420 On manuaal online, nii et kui sa lihtsalt kirjutada Python arvuti 118 00:09:06,420 --> 00:09:10,500 näed, et versioon kerkib terminal. 119 00:09:11,070 --> 00:09:17,720 Nii et ma ette link käsiraamatu 2. versioon Python samuti petma lehte. 120 00:09:17,720 --> 00:09:23,100 On Version 3 Python, kuid Mac ei pruugi 121 00:09:23,100 --> 00:09:25,130 tulla, et peale keeratud. 122 00:09:25,130 --> 00:09:27,360 Seega ei ole väga erinev. 123 00:09:27,360 --> 00:09:33,270 Okei, nii et mõned põhitõdesid Regulaaravaldises Python. 124 00:09:34,080 --> 00:09:42,650 >> Nii et siin ma kasutasin väga lihtne väljend, nii et ma tegin Python import re 125 00:09:43,750 --> 00:09:47,070 ja siis võttis tulemus re.search. 126 00:09:47,070 --> 00:09:49,910 Ja otsing kestab 2 argumendid. 127 00:09:49,910 --> 00:09:56,040 Esimene on regulaaravaldis, ja teine ​​on tekst 128 00:09:56,040 --> 00:09:58,290 või string soovite analüüsida. 129 00:09:58,290 --> 00:10:01,210 Ja siis ma välja printida result.group. 130 00:10:01,580 --> 00:10:05,860 Nii et need on 2 põhifunktsiooni me näeme täna 131 00:10:06,790 --> 00:10:10,170 tundmaõppimisel regulaaravaldiste. 132 00:10:10,170 --> 00:10:12,880 Nii lihtsalt kui lagundada see regulaaravaldise siin 133 00:10:12,880 --> 00:10:21,770 h ja siis \ w ja siis olen nii \ w lihtsalt endale mingit täht seal. 134 00:10:21,850 --> 00:10:26,820 Nii et siin me otsime "h" ja siis teine ​​tähemärk 135 00:10:26,820 --> 00:10:30,060 ja siis m, nii siin, mis vastaks sink 136 00:10:30,060 --> 00:10:34,480 aastal, "Abraham Lincoln ja singi võileibu." 137 00:10:35,040 --> 00:10:37,150 See on tulemus, et grupp. 138 00:10:37,680 --> 00:10:43,130 Teine asi, mida me saame teha, on kasutada meie enne stringide teksti Python. 139 00:10:43,130 --> 00:10:46,220 Nii et ma arvan, et ma minna ja tõmmake see siin. 140 00:10:46,220 --> 00:10:49,210 Python import re. 141 00:10:50,070 --> 00:10:54,000 Ja kui ma seda sama asja - ütleme tekst on 142 00:10:55,390 --> 00:11:00,800 "Abraham" olgem suurendamiseks - seal me läheme. 143 00:11:01,610 --> 00:11:06,430 Tekst on "Abraham sööb sinki." 144 00:11:07,460 --> 00:11:15,260 Okei, ja siis tulemuseks = re.search. 145 00:11:16,260 --> 00:11:22,020 Ja siis meie väljend võib olla h, ja siis ma teen dot m. 146 00:11:22,020 --> 00:11:26,280 Nii dot lihtsalt võtab iga märk, mis ei ole uus liin sealhulgas numbrite 147 00:11:26,280 --> 00:11:28,650 protsent märke, midagi sellist. 148 00:11:28,650 --> 00:11:38,030 Ja siis tekst - buum - ja siis result.group--jah. 149 00:11:38,030 --> 00:11:41,820 Nii et on, kuidas rakendada põhifunktsioonide siin. 150 00:11:42,300 --> 00:11:55,110 Kui meil oleks tekst ring, et - et hull tekst - ka öelda palju kaldkriipsud 151 00:11:55,110 --> 00:12:01,180 ja stringid sees ja asju, mis võivad tunduda paojadade, 152 00:12:01,180 --> 00:12:08,480 siis me ilmselt tahad kasutada toores tekstisisestus veenduda, et on vastu võetud. 153 00:12:08,480 --> 00:12:14,120 Ja see ainult tundub nii. 154 00:12:14,120 --> 00:12:17,810 Nii et kui me otsisime igaüks sinna me ei peaks midagi leida. 155 00:12:19,070 --> 00:12:21,680 Aga see, kuidas sa seda rakendada vaid enne string 156 00:12:21,680 --> 00:12:24,990 regulaaravaldise paned kirja r. 157 00:12:26,150 --> 00:12:30,260 >> Okei, nii et andke meile edasi. 158 00:12:30,260 --> 00:12:33,730 Olgu - nii look paar korduvad mustrid siin. 159 00:12:34,750 --> 00:12:39,150 Nii et üks asi, mida sa tahad teha, on korrata asju 160 00:12:40,040 --> 00:12:42,480 kui otsite läbi teksti. 161 00:12:42,480 --> 00:12:48,300 Niisiis, mida teha, millele järgneb mis tahes arvu b - sa ab *. 162 00:12:48,630 --> 00:12:51,620 Ja siis on hulk teisi reegleid ka. 163 00:12:51,620 --> 00:12:54,380 Ja saab vaadata kõiki neid üles, ma lihtsalt joosta mõned 164 00:12:54,380 --> 00:12:57,630 Levinuim ones. 165 00:12:57,630 --> 00:13:03,920 Nii ab + on järgne N on suurem kui 0 ja b. 166 00:13:04,510 --> 00:13:08,000 ab? on järgneb 0 või 1 b. 167 00:13:09,190 --> 00:13:18,580 ab {N} on järgnevad N b, ja siis nii edasi. 168 00:13:18,580 --> 00:13:22,820 Kui teil on 2 numbrit looksulg olete täpsustatakse valik 169 00:13:23,300 --> 00:13:25,440 et võib olla võimalik sobitada. 170 00:13:26,390 --> 00:13:30,420 Nii me vaatame rohkem paar korduvad mustrid minut. 171 00:13:31,960 --> 00:13:42,300 Nii 2 asjad meeles pidada, kui kasutate neid mustrite tööriistu siin. 172 00:13:42,300 --> 00:13:52,120 Nii ütleme me tahame vaadata hm kohta, "Abraham Lincoln muudab singi võileibu." 173 00:13:52,120 --> 00:13:55,230 Nii ma muutsin Abraham Lincolni nime Abraham. 174 00:13:55,230 --> 00:14:00,290 Ja nüüd me otsime mis tagastatakse selle otsingu funktsiooni, 175 00:14:00,290 --> 00:14:03,270 ja see annab ainult singi käesolevas asjas. 176 00:14:03,620 --> 00:14:08,080 Ja see, et kuna otsing vaid loomulikult võtab vasakul kõige järjekorda. 177 00:14:08,080 --> 00:14:12,130 Ja kõik regulaaravaldiste kui te pole teisiti teen seda. 178 00:14:12,830 --> 00:14:18,880 Kui me tahame leida kõik seal on funktsioon, et - kõik. 179 00:14:18,880 --> 00:14:35,100 Nii et võiks lihtsalt nägema kõiki = re.findall (h.m ", tekst) 180 00:14:35,100 --> 00:14:44,540 ja siis all.group (). 181 00:14:44,540 --> 00:14:51,040 Kõik toodab nii sink ja sink, sel juhul on mõlemad stringid Abraham iga sink. 182 00:14:51,610 --> 00:14:55,110 Nii et on veel üks võimalus. 183 00:14:56,250 --> 00:15:06,940 >> Suur. Teine asi, mida meeles pidada on see, et regulaaravaldiste Võtke suurim intuitiivselt. 184 00:15:06,940 --> 00:15:09,520 Vaadakem seda näiteks. 185 00:15:10,200 --> 00:15:16,070 Me tegime seda vasakul kõige otsing siin ja siis ma proovisin suuremat otsing 186 00:15:16,070 --> 00:15:18,800 kasutades Kleene star operaator. 187 00:15:18,800 --> 00:15:24,180 Nii, "Abraham Lincoln muudab singi võileibu," ja sain ainult tagasi 188 00:15:24,180 --> 00:15:26,280 m tulemusena. 189 00:15:26,280 --> 00:15:31,670 Selle põhjuseks viga oli, et ma oleks võtnud mitmeid 190 00:15:31,670 --> 00:15:36,140 h, sest ma ei täpsustanud midagi minna vahel h ja m. 191 00:15:36,140 --> 00:15:42,010 Ainus näide olemas, mis oli m - ainult näiteid seal m see 192 00:15:42,010 --> 00:15:46,220 ja mis tahes arv h on olnud lihtsalt string m. 193 00:15:46,490 --> 00:15:51,850 Siis ma püüdsin seda uuesti, ma ütlesin: "Okei, olgem saada tegelik suurim rühm siin." 194 00:15:51,850 --> 00:15:59,670 Ja siis ma tegin h. * M, nii et lihtsalt tagastab suvalise arvu märkide vahel h ja m. 195 00:16:00,280 --> 00:16:02,950 Ja kui te olete hakanud just läbi ja mõtlesin: "Oh, okei, noh see 196 00:16:02,950 --> 00:16:11,560 mulle sinki, "see tegelikult võtab kõike h Abraham Lincoln 197 00:16:11,560 --> 00:16:13,690 kõik viis kuni lõpuni sink. 198 00:16:14,040 --> 00:16:18,110 See on ahne, ta näeb h - kõik see muu teksti - m, 199 00:16:18,110 --> 00:16:21,280 ja see on, mida ta võtab sisse 200 00:16:22,060 --> 00:16:27,480 See on eriti äärmuslikud - see on omadus, saame ka 201 00:16:27,480 --> 00:16:30,670 täpsustada see ole ahne kasutades muid funktsioone. 202 00:16:31,480 --> 00:16:34,490 Aga see on midagi, mida me peame meeles pidama, eriti 203 00:16:34,490 --> 00:16:38,720 vaadeldes HTML tekst, mis on üks põhjus, et 204 00:16:38,720 --> 00:16:41,500 regulaaravaldiste on raske HTML. 205 00:16:42,460 --> 00:16:46,310 Sest kui sul on HTML avatud tag ja siis palju kraami keskel 206 00:16:46,310 --> 00:16:49,820 ja siis mõne muu HTML suletud tag palju hiljem programmi 207 00:16:49,820 --> 00:16:55,420 te olete just söönud kuni palju oma HTML kood võib kogemata. 208 00:16:56,200 --> 00:17:01,840 >> Olgu - nii rohkem erimärke nagu paljudes teistes keeltes, 209 00:17:01,840 --> 00:17:04,780 me põgeneda kasutades kaldkriipsuga. 210 00:17:04,780 --> 00:17:10,329 Nii saame kasutada dot määrata iga märk, välja arvatud uus liin. 211 00:17:10,329 --> 00:17:14,550 Saame kasutada põgeneda w täpsustada iga tähemärk. 212 00:17:14,550 --> 00:17:20,329 Ja analoogia põgeneda d iga täisarv - numbriline iseloomu. 213 00:17:20,630 --> 00:17:27,440 Saame määrata - saame kasutada sulgudes täpsustada seotud väljendid. 214 00:17:27,440 --> 00:17:30,970 Nii, et see oleks valmis vastu võtma, b, või c. 215 00:17:31,320 --> 00:17:37,000 Ja me saame ka määrata või võimalusi a või b. 216 00:17:37,000 --> 00:17:41,110 Näiteks - kui otsisime mitu võimalikku 217 00:17:41,110 --> 00:17:44,940 Sulgudes saaksime kasutada või käitaja in - 218 00:17:44,940 --> 00:17:52,480 nii mingem tagasi selle näide. 219 00:17:53,000 --> 00:17:59,790 Ja nüüd võtkem - mingem tagasi selle näite siin ja siis 220 00:17:59,790 --> 00:18:12,290 võta ae - nii et see peaks tagasi - ma arvan, et see on ikka Abraham. 221 00:18:12,290 --> 00:18:17,410 Nii et see - kui me kõik - suurepärane. 222 00:18:17,410 --> 00:18:22,700 Tehkem teksti ajakohastada siin. 223 00:18:22,700 --> 00:18:34,690 "Abraham sööb singi samas palistamiseks tema - kuigi hemming." Suur. 224 00:18:44,090 --> 00:18:47,330 Kõik. Suur. Nüüd saame sink, sink ja hem. 225 00:18:48,510 --> 00:18:59,370 Kuigi hemming - kui koolibrid temale - kuigi koolibrid hem teda. Suur. 226 00:19:00,350 --> 00:19:03,250 Sama asi. 227 00:19:03,820 --> 00:19:09,180 Nüüd naaseb ikka lihtsalt sink, sink ja hem ilma pealevõtmine hum või teda. 228 00:19:09,940 --> 00:19:22,600 Great - mis siis, kui me tahtsime vaadata ka seda, et - nii et me võiks teha ka 229 00:19:23,510 --> 00:19:33,810 teda - me tuleme tagasi, et. 230 00:19:34,810 --> 00:19:45,760 Olgu - nii - kõik õige - ametikohtadel võid kasutada ka kelku või dollari märk 231 00:19:45,760 --> 00:19:49,350 täpsustada, et te otsite midagi alguses või lõpus stringi. 232 00:19:50,260 --> 00:19:52,260 Või algust või sõna lõpus. 233 00:19:52,400 --> 00:19:54,470 See on üks viis, kuidas seda kasutada. 234 00:19:55,630 --> 00:20:01,160 >> Olgu - nii meile mängida veidi suurem tekstilõik. 235 00:20:03,950 --> 00:20:08,310 Öelgem seda rida siin - see väide siin. 236 00:20:08,310 --> 00:20:11,360 Võimu regulaaravaldis on, et nad võivad määrata mustrid 237 00:20:11,360 --> 00:20:13,390 mitte ainult fikseeritud tähemärki. 238 00:20:14,900 --> 00:20:18,790 Tehkem - olgem nimetame seda blokeerida. 239 00:20:22,400 --> 00:20:27,110 Siis me lugeda kõik, et sisse 240 00:20:28,890 --> 00:20:50,820 Ja siis on - tehkem kõik =; Millised on mõned asjad, mida me võiks otsida siin kasumlikult? 241 00:20:50,820 --> 00:20:54,070 Me võiks otsida väljendit kõrva. 242 00:20:55,050 --> 00:21:01,520 Mitte väga huvitav. Kuidas nii? Eks me näe, mis juhtub. 243 00:21:03,710 --> 00:21:05,710 Ma andsin talle probleem. 244 00:21:06,380 --> 00:21:10,750 Nii tahes mitmeid asju enne uuesti ja kõik. 245 00:21:10,750 --> 00:21:15,630 Nii et peaks tagasi kõik algusest peale kuni kõik uuesti ehk paar korda. 246 00:21:18,800 --> 00:21:21,970 Ja siis on meil siin võimu regulaaravaldiste on, et nad 247 00:21:21,970 --> 00:21:24,900 saab määrata mustrid mitte ainult tegelased on siin. 248 00:21:24,900 --> 00:21:28,510 Nii et kõik viis kuni lõpliku re, see algas vasakul kõige ja oli ahne. 249 00:21:30,710 --> 00:21:32,710 Saame näha - Mida võiks veel otsida. 250 00:21:32,710 --> 00:21:39,860 Ma arvan, et üks asi, kui sa olid huvitatud otsivad asesõnad ta ja ta, 251 00:21:39,860 --> 00:21:44,600 võid kontrollida s on võrdne 0 või 1 252 00:21:44,600 --> 00:21:49,710 ja väljendus ta, ja see on ilmselt ei kavatse naasta - 253 00:21:49,710 --> 00:21:58,020 Oh, ma arvan, et see tagastatakse tema, sest seal me praegu võime, et päev, siin on. 254 00:22:00,590 --> 00:22:06,270 Püüdkem täpsustades, et see peab tulema alguses midagi. 255 00:22:06,640 --> 00:22:09,530 Saame näha, kas see langeb välja. 256 00:22:09,530 --> 00:22:19,630 Nii et me saame teha rasva, ja seal me ei saa midagi, sest tema ja ta 257 00:22:19,630 --> 00:22:22,870 ei esine seda fraasi. 258 00:22:24,960 --> 00:22:30,410 Suur. Olgu - nii tagasi kass siin. 259 00:22:30,410 --> 00:22:35,720 Nii keeruline mustrid on haiget aju. 260 00:22:35,720 --> 00:22:40,500 Nii et on põhjus, miks me kasutame regulaaravaldiste vältida neid küsimusi. 261 00:22:40,820 --> 00:22:43,520 >> Nii et siin on mõned muud kasulikku režiimid saab mängida. 262 00:22:43,520 --> 00:22:50,290 Vaatasime otsingu täna, kuid võid kasutada ka mängu, split, findall ja rühmad. 263 00:22:50,290 --> 00:22:53,970 Nii teiste lahedaid asju saab teha regulaaravaldiste peale lihtsalt 264 00:22:53,970 --> 00:22:58,870 otsin mustreid astub muster ja hoides kõik kohtumised - 265 00:22:58,870 --> 00:23:02,530 oma muutujate - ja siis kasutades neid oma koodi hiljem. 266 00:23:02,850 --> 00:23:05,980 See võib olla üsna kasulik. Muud asjad võiks lugedes. 267 00:23:05,980 --> 00:23:11,720 Nii saame loota arvul regulaaravaldise, 268 00:23:11,720 --> 00:23:13,960 ja see on see, mida me saame kasutada rühmad. 269 00:23:13,960 --> 00:23:17,550 Ja muude transpordiliikide samuti on ka võimalik. 270 00:23:18,040 --> 00:23:22,980 Nii et ma tahan rääkida natuke rohkem muid võimalusi, mida saab kasutada regulaaravaldiste. 271 00:23:22,980 --> 00:23:29,100 >> Nii et üks rohkem arenenud taotlus on udune sobitamine. 272 00:23:29,100 --> 00:23:33,450 Nii et kui te otsite teksti väljend, Julius Caesar, 273 00:23:33,450 --> 00:23:37,740 ja sa näed kas Gaius Julius Caesar või nimi Julius Caesar teistes keeltes, 274 00:23:37,740 --> 00:23:44,400 siis võib ka soovi loovutada mõned kaalu need väärtused. 275 00:23:44,400 --> 00:23:48,930 Ja kui see on piisavalt lähedal - kui see ületab teatud piiri - siis sa tahad 276 00:23:48,930 --> 00:23:50,860 et oleks võimalik vastu võtta Julius Caesar. 277 00:23:50,860 --> 00:24:00,580 Nii on paar erinevate rakenduste jaoks, et mõne muu keele samuti. 278 00:24:02,580 --> 00:24:08,420 Siin on mõned muud vahendid, Regex Pal - käepärane väike app online 279 00:24:08,420 --> 00:24:12,190 Kontrollimaks, kas teie regulaaravaldiste koosnevad õigesti. 280 00:24:12,190 --> 00:24:18,500 On ka standalone tööriistu, mida saab käivitada otse oma töölaual 281 00:24:18,500 --> 00:24:22,100 nagu Ultra Pico ja samuti lihtsalt cookbooks. 282 00:24:22,100 --> 00:24:25,410 Nii et kui te teete projekt, mis hõlmab ton regulaaravaldiste 283 00:24:25,410 --> 00:24:29,810 see on ilmselt koht, kuhu minna väljapoole täna. 284 00:24:31,520 --> 00:24:35,770 Ja siis lihtsalt anda teile ettekujutuse, kuidas ühine see on 285 00:24:35,770 --> 00:24:44,090 on grep Unix, Perl on sisseehitatud ja C on PCRE eest C. 286 00:24:44,090 --> 00:24:48,890 Ja siis kõik need teised keeled ka regulaaravaldise paketid 287 00:24:48,890 --> 00:24:52,020 et opereerida sisuliselt sama süntaks saime maitsta täna. 288 00:24:52,020 --> 00:24:54,790 PHP, Java, Ruby, ja nii edasi. 289 00:24:56,080 --> 00:24:58,980 >> Google Code Search on tegelikult mainimist väärt, see on üks 290 00:24:58,980 --> 00:25:05,720 suhteliselt vähe rakendusi seal, mis võimaldab elanikele juurdepääsu 291 00:25:05,720 --> 00:25:07,800 oma andmebaasi kasutades regulaaravaldiste. 292 00:25:07,800 --> 00:25:12,920 Nii et kui sa vaatad Google Code Search leiad kood 293 00:25:12,920 --> 00:25:16,880 kui otsite näiteks selle kohta, kuidas funktsioon võidakse kasutada, 294 00:25:16,880 --> 00:25:21,610 mida saab kasutada regulaaravaldiste leida selle funktsiooni kasutatakse igasuguseid erinevaid juhtumeid. 295 00:25:21,610 --> 00:25:28,000 Sa võid otsida ümbernimetamisel nimega, ja siis võiks otsida lipu kirjutada või lugeda 296 00:25:28,000 --> 00:25:32,000 kui sa tahad näiteks ümbernimetamisel nimega kasutatakse sellisel juhul. 297 00:25:33,530 --> 00:25:37,010 Nii sama asi seal, ja siin on mõned viited. 298 00:25:37,010 --> 00:25:40,990 See on saadaval online samuti, et läheb edasi, kui 299 00:25:40,990 --> 00:25:45,560 soovite vaadata Python, grep, Perl - tahad lihtsalt natuke inspiratsiooni 300 00:25:45,560 --> 00:25:50,650 või kui sa tahad otsida rohkem teooria siin on mõned head hüpped off kohtades. 301 00:25:50,650 --> 00:25:53,870 Suur aitäh. 302 00:25:58,470 --> 00:25:59,910 [CS50.TV]