1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminario: Skemo Kongruoj kun Regulaj Esprimoj] 2 00:00:02,000 --> 00:00:04,000 [John Mussman-Universitato Harvard] 3 00:00:04,000 --> 00:00:07,220 [Ĉi tiu estas CS50.-CS50.TV] 4 00:00:07,780 --> 00:00:11,610 Okay. Nu, bonvenon ĉiuj. Ĉi tiu estas CS50 2012. 5 00:00:11,780 --> 00:00:16,610 Mia nomo estas Johano kaj mi estos parolas hodiaŭ pri regulaj esprimoj. 6 00:00:16,610 --> 00:00:22,530 Regulaj esprimoj estas unuavice ilo, sed ankaŭ iam uzita 7 00:00:22,530 --> 00:00:28,650 en kodo aktive por esence kongruas ŝablonoj kaj ŝnuro. 8 00:00:28,650 --> 00:00:33,800 Do jen retejo komikaj de xkcd. 9 00:00:34,440 --> 00:00:42,370 En ĉi tiu komikso estas murdo mistero kie la murdisto havas 10 00:00:42,370 --> 00:00:47,860 sekvis iu en ferioj, kaj la ĉefroluloj devas 11 00:00:47,860 --> 00:00:52,500 serĉi tra 200 megabajtojn da retmesaĝoj serĉas adreso. 12 00:00:52,500 --> 00:00:56,090 Kaj ili estas rezigni kiam iu, kiu scias regulaj esprimoj - 13 00:00:56,090 --> 00:01:00,550 supozeble superhéroe - swoops malsupren kaj skribas iujn kodo 14 00:01:00,550 --> 00:01:02,970 kaj solvas la murdo mistero. 15 00:01:02,970 --> 00:01:07,370 Do supozeble ke estos iu kiu vi estos rajtigita fari 16 00:01:07,370 --> 00:01:09,370 post ĉi tiu seminario. 17 00:01:09,370 --> 00:01:12,250 Ni nur tuj havigos koncizan enkondukon al la lingvo 18 00:01:12,250 --> 00:01:16,770 kaj donu vin sufiĉe Per kio iri post pli da rimedoj en via propra. 19 00:01:17,680 --> 00:01:21,700 >> Do regulaj esprimoj aspektas esence kiel ĉi tio. 20 00:01:22,930 --> 00:01:25,550 Tio estas regula esprimo en Ruby. 21 00:01:25,550 --> 00:01:29,280 Ne estas terure malsamaj trans lingvoj. 22 00:01:29,690 --> 00:01:37,630 Ni havas nur sur slashes komenci kaj marki la regula esprimo en Ruby. 23 00:01:37,630 --> 00:01:42,880 Kaj jen estas regula esprimo por serĉi en retadreso ŝablono. 24 00:01:42,880 --> 00:01:49,160 Do ni vidas en la unua bito serĉas ajnan alfanuméricas karaktero. 25 00:01:50,500 --> 00:01:54,880 Tio estas ĉar retadresoj ofte devas komenci kun alfabeta karaktero. 26 00:01:55,460 --> 00:01:59,330 Kaj tiam neniu speciala signo sekvata de la @ simbolo. 27 00:01:59,330 --> 00:02:03,260 Kaj tiam la sama afero por domajna nomo. 28 00:02:03,260 --> 00:02:10,030 Kaj poste inter 2 kaj 4 karakteroj por serĉi la. Com,. Net, kaj tiel plu. 29 00:02:10,850 --> 00:02:13,200 Do tio estas alia ekzemplo de regula esprimo. 30 00:02:13,200 --> 00:02:17,270 Do regulaj esprimoj estas protokolojn por trovi patters en teksto. 31 00:02:17,270 --> 00:02:21,130 Ili faras komparojn, unuarangaj kaj anstataŭantoj. 32 00:02:21,690 --> 00:02:27,970 Do la tria ekzemplo estas trovi cxiujn telefonnumerojn finante en la 54 en dosierujo. 33 00:02:27,970 --> 00:02:34,360 Do antaux David eltiras ĝis la CS50 katalogo ni povus serĉi 34 00:02:34,360 --> 00:02:40,450 mastro kie ni havas krampoj tiam 3 numerojn tiam fini parentezo, 35 00:02:40,450 --> 00:02:44,070 Ankoraŭ 3 numerojn, skripto, 2 nombroj, kaj tiam 54. 36 00:02:44,070 --> 00:02:48,310 Kaj tio estus esence kiel ni supreniru kun regula esprimo por serĉi tiu. 37 00:02:49,150 --> 00:02:52,960 >> Do estas - ni faris kelkajn aĵojn en CS50 kiuj estas iom kiel 38 00:02:52,960 --> 00:02:59,740 regulaj esprimoj, do - ekzemple - en la dictionary.C dosieron 39 00:02:59,740 --> 00:03:04,720 por la sorĉas ĉekon problemo aro vi eble uzis fscanf 40 00:03:04,720 --> 00:03:07,930 legi en vorto de la vortaro. 41 00:03:07,930 --> 00:03:16,240 Kaj vi povas vidi la procento 45s serĉas ĉenon de 45 signoj. 42 00:03:16,240 --> 00:03:20,020 Do estas iom kiel rudimenta regula esprimo. 43 00:03:21,150 --> 00:03:26,060 Kaj vi povas havi ajnan 45 karakteroj kiuj trafas la priskribo en tie 44 00:03:26,060 --> 00:03:28,080 kaj repreni tiujn supren. 45 00:03:28,080 --> 00:03:33,480 Kaj tiam la dua ekzemplo en la plej freŝa retejo programado problemo 46 00:03:33,480 --> 00:03:40,760 aro en la distro kodon por php ni efektive ja havas simplan regula esprimo. 47 00:03:40,760 --> 00:03:46,790 Kaj ĉi tiu estas nur simple serĉas por kontroli se la retpaĝo kiu pasis en 48 00:03:46,790 --> 00:03:51,940 egalas ĉu ensaluto aŭ logout registriĝi. PHP. 49 00:03:52,220 --> 00:03:57,910 Kaj poste reveni vera aŭ falsa bazita sur tiu regula esprimo kongruanta. 50 00:03:59,400 --> 00:04:01,740 >> Do kiam vi uzas regulan esprimon? 51 00:04:01,740 --> 00:04:04,820 Kial vi estas ĉi tie hodiaŭ? 52 00:04:05,330 --> 00:04:08,480 Do vi ne volas uzi regulan esprimon kiam tie estas iu kiu 53 00:04:08,480 --> 00:04:11,640 faras la laboron por vi eĉ pli facile. 54 00:04:11,640 --> 00:04:15,510 Do XML kaj HTML estas fakte sufiĉe malfacila 55 00:04:15,510 --> 00:04:18,480 skribi regulaj esprimoj por kiel ni vidos en iomete. 56 00:04:19,110 --> 00:04:23,280 Do estas dediĉita sintaksaj analiziloj por tiuj lingvoj. 57 00:04:24,170 --> 00:04:30,060 Vi ankaŭ devas esti bone kun la komerco offs kaj precizeco ofte. 58 00:04:30,060 --> 00:04:36,220 Se vi provas - tiel ni vidis regula esprimo por retadreson 59 00:04:37,370 --> 00:04:42,590 sed diru vi volis specifa retadreso kaj laŭgrade la 60 00:04:42,590 --> 00:04:48,570 regula esprimo fariĝu pli kompleksa kiel ĝi faris pli preciza. 61 00:04:49,580 --> 00:04:52,260 Do kiu estus unu komerco ekstere. 62 00:04:52,260 --> 00:04:55,330 Vi devas esti certa, ke vi bonfartas fari kun la regula esprimo. 63 00:04:55,330 --> 00:04:57,920 Se vi scias precize kion vi serĉas ĝi povus fari pli sentita 64 00:04:57,920 --> 00:05:02,070 meti en la tempo kaj skribi pli efika sintaksa analizilo. 65 00:05:02,070 --> 00:05:06,980 Kaj fine ekzistas historia temo kun la reguleco 66 00:05:06,980 --> 00:05:08,940 de esprimoj kaj lingvoj. 67 00:05:08,940 --> 00:05:12,960 Regulaj esprimoj estas vere multe pli potenca ol 68 00:05:12,960 --> 00:05:16,450 regulesprimoj por diri en formala senso. 69 00:05:17,130 --> 00:05:20,150 >> Do mi ne volas iri tro malfrue en la formala teorio, 70 00:05:20,150 --> 00:05:24,000 sed plimulto el la lingvoj kiujn ni kodon en vere ne estas regula. 71 00:05:24,000 --> 00:05:29,110 Kaj tio estas kial regulesprimoj foje ne konsideris ĉiujn kiuj sekura. 72 00:05:29,670 --> 00:05:33,150 Do esence estas Hierarkio laŭ Ĉomski de lingvoj, 73 00:05:33,150 --> 00:05:38,400 kaj regulaj esprimoj estas konstrui uzante kuniĝo, kunmeto, 74 00:05:38,400 --> 00:05:41,810 kaj la Stelo de Kleene operacio kiu vidos post kelkaj minutoj. 75 00:05:43,130 --> 00:05:48,860 Se vi estas interesita en teorio estas sufiĉe multe okazas tie sub la kapuĉo. 76 00:05:50,360 --> 00:05:55,880 >> Tiel mallonga historio - nur por la kunteksto tie - regulaj aroj venis 77 00:05:55,880 --> 00:05:59,580 en la 1950-aj jaroj, kaj tiam ni havis simplan eldonistoj kiuj 78 00:05:59,580 --> 00:06:03,300 korpigis regulaj esprimoj - nur serĉas kordoj. 79 00:06:03,570 --> 00:06:09,110 Grep - kiu estas komandlinio ilo - estis unu el la unuaj 80 00:06:09,110 --> 00:06:14,160 tre popularaj iloj kiuj korpigis regulaj esprimoj en la jaroj 1960. 81 00:06:14,160 --> 00:06:20,560 En la 80, Perl estis konstruita - estas programlingvo, kiu 82 00:06:20,560 --> 00:06:24,110 korpigas regulaj esprimoj tre elstare. 83 00:06:24,550 --> 00:06:30,130 Kaj tiam pli lastatempe ni havis Perl kongrua regula esprimo 84 00:06:30,130 --> 00:06:35,870 protokoloj esence en aliaj lingvoj kiuj uzas multe de la sama sintakso. 85 00:06:36,630 --> 00:06:39,840 Kompreneble la plej grava evento estis en 2008 86 00:06:39,840 --> 00:06:43,040 kie ne estis la unua Nacia Regulaj Esprimoj Tago, 87 00:06:43,040 --> 00:06:47,350 kiun mi kredas estas junio 1 se vi volas okazigi tion. 88 00:06:48,430 --> 00:06:50,840 >> Denove, nur iom pli teorion tie. 89 00:06:52,180 --> 00:06:55,320 Do estas kelkaj malsamaj manieroj konstrui regulesprimoj. 90 00:06:55,950 --> 00:07:02,050 Unu simpla vojo estas konstrui la esprimo kiu vi iras 91 00:07:02,050 --> 00:07:07,500 kuri sur la kordo interpreti - esence konstrui iom mini-programo kiu 92 00:07:07,500 --> 00:07:11,870 analizos pecoj de ŝnuro kaj vidu, "Ho, ne ĉi persvadis la regula esprimo aŭ ne?" 93 00:07:12,250 --> 00:07:14,250 Kaj poste kuros tio. 94 00:07:14,250 --> 00:07:17,300 Do se vi havas tre malgrandan regula esprimo, ĉi tio estas probable 95 00:07:17,300 --> 00:07:19,380 la plej efika maniero por fari ĝin. 96 00:07:20,090 --> 00:07:25,420 Kaj tiam se vi - alia eblo estas subteni rekonstrui la 97 00:07:25,420 --> 00:07:30,260 esprimo dum vi iros, kaj tiu estas la simuli eblo. 98 00:07:30,440 --> 00:07:37,690 Kaj tiuj fruaj provoj de regula esprimo algoritmoj estis 99 00:07:37,690 --> 00:07:44,330 relative simpla kaj relative rapida, sed ne havis multan flekseblecon. 100 00:07:44,330 --> 00:07:47,500 Do fari eĉ iuj el la aĵoj kiuj tuj rigardi 101 00:07:47,500 --> 00:07:52,860 hodiaŭ ni devis fari pli kompleksajn regula esprimo 102 00:07:52,860 --> 00:07:56,650 realigoj, kiu estas potenciale multe pli malrapida, tiel ke estas iu al konsideri 103 00:07:57,510 --> 00:08:02,920 Ekzistas ankaŭ regulajn esprimojn neado de atako vario 104 00:08:02,920 --> 00:08:08,330 kiuj ekspluatas la potencialon por tiuj pli novaj realigoj de 105 00:08:08,330 --> 00:08:10,930 regulesprimoj fariĝi tre kompleksa. 106 00:08:11,570 --> 00:08:15,650 Kaj en multa la sama senco, kiun ni vidis en buffer overflow atakoj, 107 00:08:15,650 --> 00:08:21,610 vi havas atakoj kiuj laboras farante rekursie maŝojn kiuj 108 00:08:21,610 --> 00:08:24,400 invadita de la kapablo de memoro. 109 00:08:24,780 --> 00:08:29,540 Kaj por iu Regexen estas unu el la oficialaj pluraloj de regula esprimo 110 00:08:29,540 --> 00:08:32,890 per analogio al bovoj en la anglosaksa. 111 00:08:33,500 --> 00:08:40,169 >> Bone, do la Python Library multaj el vi tie en persono havas Mac, 112 00:08:40,169 --> 00:08:43,860 do vi povas reale tiri ĉi supre sur via ekrano. 113 00:08:43,860 --> 00:08:47,480 Regulaj esprimoj estas konstruitaj en Python. 114 00:08:48,070 --> 00:08:53,020 Kaj tiel Python estas precargada sur Mac kaj ankaŭ disponebla rete ĉe ĉi tiu ligilo. 115 00:08:53,770 --> 00:08:57,350 Do se vi rigardas vi povas paŭzo kaj certigi vin havas Python 116 00:08:58,080 --> 00:09:00,170 kiel ni ludi ĉi tie. 117 00:09:00,780 --> 00:09:06,420 Estas manlibro linio, do se vi simple tajpi Python en vian komputilon 118 00:09:06,420 --> 00:09:10,500 Vi vidos ke la versio venas en la terminalo. 119 00:09:11,070 --> 00:09:17,720 Do mi havigis ligon al la manlibro por versio 2 de Python tiel kiel cheat folio. 120 00:09:17,720 --> 00:09:23,100 Ekzistas versio 3 de Python, sed via Mac ne nepre 121 00:09:23,100 --> 00:09:25,130 veni kun tiu precargada. 122 00:09:25,130 --> 00:09:27,360 Do ne terure malsamaj. 123 00:09:27,360 --> 00:09:33,270 Bone, do iuj fundamentojn de uzi regulajn esprimojn en Python. 124 00:09:34,080 --> 00:09:42,650 >> Do jen mi uzis tre simpla esprimo, do mi faris Python importado re 125 00:09:43,750 --> 00:09:47,070 kaj tiam ili prenis la rezulto de re.search. 126 00:09:47,070 --> 00:09:49,910 Kaj la serĉo prenas 2 argumentojn. 127 00:09:49,910 --> 00:09:56,040 La unua estas la regula esprimo, kaj la dua estas la teksto 128 00:09:56,040 --> 00:09:58,290 aŭ kordo vi volas analizi. 129 00:09:58,290 --> 00:10:01,210 Kaj tiam mi presis el la result.group. 130 00:10:01,580 --> 00:10:05,860 Do jen estas la 2 bazaj funkcioj tuj vidas hodiaŭ 131 00:10:06,790 --> 00:10:10,170 en lerni pri regulaj esprimoj. 132 00:10:10,170 --> 00:10:12,880 Do nur detruado ĉi regula esprimo ĉi tie 133 00:10:12,880 --> 00:10:21,770 h kaj tiam \ w kaj tiam m tiom \ w nur akceptas ajnan alfabeta signo en tie. 134 00:10:21,850 --> 00:10:26,820 Do jen ni serĉas "h" kaj poste alia alfabeta karaktero 135 00:10:26,820 --> 00:10:30,060 kaj tiam m, do tie kiu kongruas ŝinko 136 00:10:30,060 --> 00:10:34,480 en, "Abraham Lincoln kaj ŝinko sandviĉoj." 137 00:10:35,040 --> 00:10:37,150 Ĉi tio estas la rezulto de tiu grupo. 138 00:10:37,680 --> 00:10:43,130 Alia afero kiun ni povas fari estas uzi nian antaŭ kordoj de teksto en Python. 139 00:10:43,130 --> 00:10:46,220 Do mi supozas mi iros antaŭen kaj tiri ke ĝis ĉi tie. 140 00:10:46,220 --> 00:10:49,210 Pitono importado re. 141 00:10:50,070 --> 00:10:54,000 Kaj se mi faras la samon - ni diru teksto, 142 00:10:55,390 --> 00:11:00,800 "Abraham," ni zomi - tie ni iru. 143 00:11:01,610 --> 00:11:06,430 Teksto estas, "Abraham manĝas ŝinko." 144 00:11:07,460 --> 00:11:15,260 Bone, kaj do rezulti = re.search. 145 00:11:16,260 --> 00:11:22,020 Kaj tiam nia esprimo povas esti h, kaj do mi faros dot m. 146 00:11:22,020 --> 00:11:26,280 Do dot simple prenas iun karakteron, ke tiu ne estas nova linio inter nombroj, 147 00:11:26,280 --> 00:11:28,650 procenton signoj, nenio simila. 148 00:11:28,650 --> 00:11:38,030 Kaj tiam teksto - eksplodo - kaj tiam result.group--yeah. 149 00:11:38,030 --> 00:11:41,820 Do tio estas precize kiel apliki bazajn funkciojn tie. 150 00:11:42,300 --> 00:11:55,110 Se ni havis teksto ringo ke - ke freneza teksto - inkludis diri multajn reen slashes 151 00:11:55,110 --> 00:12:01,180 kaj ŝnuro ene kaj aĵoj kiuj povus aspekti kiel eskapo sekvencoj, 152 00:12:01,180 --> 00:12:08,480 tiam ni probable volas uzi la krudan tekston enigo por certigi ke estas akceptita. 153 00:12:08,480 --> 00:12:14,120 Kaj tio nur aspektas tiel. 154 00:12:14,120 --> 00:12:17,810 Do, se ni serĉas ĉiun el ili tie ni ne trovos ion. 155 00:12:19,070 --> 00:12:21,680 Sed tio estas kiel vi devus apliki ĝin; ĝuste antaŭ la sinsekvo de 156 00:12:21,680 --> 00:12:24,990 la regula esprimo vi metas la literon r. 157 00:12:26,150 --> 00:12:30,260 >> Bone, do ni plu iri. 158 00:12:30,260 --> 00:12:33,730 Bone - do ni rigardu kelkajn repetitivo ŝablonoj ĉi tie. 159 00:12:34,750 --> 00:12:39,150 Do unu afero, kiun vi volas fari estas ripeti tion 160 00:12:40,040 --> 00:12:42,480 kiel vi serĉas tra tekston. 161 00:12:42,480 --> 00:12:48,300 Do fari sekvata de ajna numero de b - vi faras ab *. 162 00:12:48,630 --> 00:12:51,620 Kaj tiam estas serio de aliaj reguloj tro. 163 00:12:51,620 --> 00:12:54,380 Kaj vi povas rigardi ĉiujn tiujn supren; mi nur kuras tra iu el la 164 00:12:54,380 --> 00:12:57,630 plej kutime uzitaj. 165 00:12:57,630 --> 00:13:03,920 Do ab + estas sekvata de ajna N pli granda ol 0 de b. 166 00:13:04,510 --> 00:13:08,000 abo? estas sekvita de 0 aŭ 1 de b. 167 00:13:09,190 --> 00:13:18,580 ab {N} estas sekvita per N de b, kaj poste tiel plu. 168 00:13:18,580 --> 00:13:22,820 Se vi havas 2 ciferoj en la krispa krampoj vi specifante gamo 169 00:13:23,300 --> 00:13:25,440 kiu povas esti eble kongruis. 170 00:13:26,390 --> 00:13:30,420 Do ni rigardu pli ĉe paro repetitivo ŝablonoj en unu minuto. 171 00:13:31,960 --> 00:13:42,300 Do 2 aĵoj devas konsideri uzinte tiujn ŝablona rekono iloj tie. 172 00:13:42,300 --> 00:13:52,120 Do ke ​​ni volas rigardi la hm de, "Abraham Lincoln faras ŝinko sandviĉoj." 173 00:13:52,120 --> 00:13:55,230 Do mi ŝanĝis Abraham Lincoln nomon al Abraham. 174 00:13:55,230 --> 00:14:00,290 Kaj nun ni serĉas kio revenis por ĉi tiu serĉo funkcio, 175 00:14:00,290 --> 00:14:03,270 kaj ĝi nur redonas ŝinko en ĉi tiu kazo. 176 00:14:03,620 --> 00:14:08,080 Kaj ĝi faras tion ĉar serĉo ĝuste nature prenas la maldekstra plej vosto. 177 00:14:08,080 --> 00:14:12,130 Kaj ĉiuj regulaj esprimoj se vi specifas alie tion ĉi faros. 178 00:14:12,830 --> 00:14:18,880 Se ni volis trovi ĉiuj estas funkcio por ke - trovos ĉiujn. 179 00:14:18,880 --> 00:14:35,100 Do kiu povis nur rigardi kiel ĉiuj = re.findall ('h.m', teksto) 180 00:14:35,100 --> 00:14:44,540 kaj tiam all.group (). 181 00:14:44,540 --> 00:14:51,040 Ĉiuj produktas ambaŭ ŝinko kaj ŝinko; en ĉi tiu kazo ambaŭ de la ŝnuroj en Abraham ĉiu ŝinko. 182 00:14:51,610 --> 00:14:55,110 Do tio estas alia eblo. 183 00:14:56,250 --> 00:15:06,940 >> Granda. La alia afero konsideri estas ke regulaj esprimoj prenas la plej granda intuicie. 184 00:15:06,940 --> 00:15:09,520 Ni rigardu tiun ekzemplon. 185 00:15:10,200 --> 00:15:16,070 Ni faris tion maldekstra plej serĉo tie, kaj tiam mi provis pli grandan serĉo 186 00:15:16,070 --> 00:15:18,800 uzante la Stelo de Kleene operatoro. 187 00:15:18,800 --> 00:15:24,180 Do por, "Abraham Lincoln faras ŝinko sandviĉoj," kaj mi nur alvenis reen 188 00:15:24,180 --> 00:15:26,280 E kiel rezulto. 189 00:15:26,280 --> 00:15:31,670 La kialo por tiu eraro estis ke mi povis esti prenita ajna kvanto de 190 00:15:31,670 --> 00:15:36,140 h estas ĉar mi ne specifis ion por iri en inter h kaj m. 191 00:15:36,140 --> 00:15:42,010 La sola ekzemplo tie kiu havis m - la sola ekzemploj tie kun m en ĝi 192 00:15:42,010 --> 00:15:46,220 kaj ajnan numeron de h estas estis nur la kordoj m. 193 00:15:46,490 --> 00:15:51,850 Tiam mi provis ĝin denove, mi diris, "Bone, ni prenu la efektiva plej granda grupo ĉi tie." 194 00:15:51,850 --> 00:15:59,670 Kaj poste mi faris h. * M, tiel ke nur revenas ajna nombro da signoj inter h kaj m. 195 00:16:00,280 --> 00:16:02,950 Kaj se vi ĵus komencas eliri kaj pensis, "Ho, bone, bone ĉi tio 196 00:16:02,950 --> 00:16:11,560 min ŝinko, "tio efektive prenas ĉion de la h en Abraham Lincoln 197 00:16:11,560 --> 00:16:13,690 tuta vojo ĝis la fino de ŝinko. 198 00:16:14,040 --> 00:16:18,110 Ĝi estas avida; vidas h - ĉio tio alia teksto - m, 199 00:16:18,110 --> 00:16:21,280 kaj tio estas kio faras in 200 00:16:22,060 --> 00:16:27,480 Ĉi tio estas aparte egregious - tio estas karakterizaĵo ni povas ankaŭ 201 00:16:27,480 --> 00:16:30,670 specifi por ne esti avida uzas aliajn funkciojn. 202 00:16:31,480 --> 00:16:34,490 Sed tio estas io, kion ni devas havi en menso speciale 203 00:16:34,490 --> 00:16:38,720 kiam rigardante HTML teksto, kiu estas unu kialo ke 204 00:16:38,720 --> 00:16:41,500 regulaj esprimoj estas malfacila por HTML. 205 00:16:42,460 --> 00:16:46,310 Ĉar se vi havas HTML malferma tag kaj poste multaj aĵoj en la mezo 206 00:16:46,310 --> 00:16:49,820 kaj tiam iuj aliaj HTML fermita etikedo multe poste en la programo, 207 00:16:49,820 --> 00:16:55,420 vi ĵus manĝis grandan kvanton de via HTML kodo eble por eraro. 208 00:16:56,200 --> 00:17:01,840 >> Bone - tiom pli specialaj karakteroj, kiel multaj aliaj lingvoj, 209 00:17:01,840 --> 00:17:04,780 ni forsavigxos uzante la oblikvo. 210 00:17:04,780 --> 00:17:10,329 Do ni povas uzi la skalara specifi ajnan karakteron krom por nova linio. 211 00:17:10,329 --> 00:17:14,550 Ni povas uzi la eskapo w specifi ajnan alfabeta karaktero. 212 00:17:14,550 --> 00:17:20,329 Kaj per analogio eskapo d por ajna entjero - nombra karaktero. 213 00:17:20,630 --> 00:17:27,440 Ni povas specifi - ni povas uzi krampojn specifi rilatajn esprimojn. 214 00:17:27,440 --> 00:17:30,970 Do tiu akceptus a, b, aŭ c. 215 00:17:31,320 --> 00:17:37,000 Kaj ni povas ankaŭ specifi aŭ eblojn por ĉu aŭ b. 216 00:17:37,000 --> 00:17:41,110 Ekzemple - se ni serĉas plurajn eblecojn 217 00:17:41,110 --> 00:17:44,940 en krampoj ni povus uzi la aŭ operatoro kiel en - 218 00:17:44,940 --> 00:17:52,480 do ni reiru al ĉi tiu ekzemplo tie. 219 00:17:53,000 --> 00:17:59,790 Kaj nun ni prenu - ni reiru al ĉi tiu ekzemplo tie ĉi, kaj poste 220 00:17:59,790 --> 00:18:12,290 preni ae - tial ĉi devus redoni - mi supozas ĉi estas ankoraŭ Abraham. 221 00:18:12,290 --> 00:18:17,410 Do tio - se ni faru ĉiuj - granda. 222 00:18:17,410 --> 00:18:22,700 Do ni ĝisdatigi la tekston ĉi tie. 223 00:18:22,700 --> 00:18:34,690 "Abraham manĝas ŝinkon dum Hemming sia - dum Hemming." Granda. 224 00:18:44,090 --> 00:18:47,330 Ĉiuj. Granda. Nun ni preni ŝinko, ŝinko, kaj malsupra rando. 225 00:18:48,510 --> 00:18:59,370 Dum Hemming - dum zumante al li - dum zumante al randon li. Granda. 226 00:19:00,350 --> 00:19:03,250 Sama afero. 227 00:19:03,820 --> 00:19:09,180 Nun ĉiuj revenas ankoraŭ nur ŝinko, ŝinko, kaj malsupra rando sen repreni la hum aŭ li. 228 00:19:09,940 --> 00:19:22,600 Granda - do kio se ni volis rigardi cxu ke - tiel ni povus ankaŭ fari 229 00:19:23,510 --> 00:19:33,810 lin aŭ - ni revenos al tio. 230 00:19:34,810 --> 00:19:45,760 Bone - tiel - ĉiuj dekstra - en poziciojn vi povas uzi ankaŭ la caret aŭ la dolaro signo 231 00:19:45,760 --> 00:19:49,350 specifi ke vi serĉas ion je la komenco aŭ la fino de ĉeno. 232 00:19:50,260 --> 00:19:52,260 Aŭ la komenco aŭ la fino de vorto. 233 00:19:52,400 --> 00:19:54,470 Tio estas unu maniero por uzi tiun. 234 00:19:55,630 --> 00:20:01,160 >> Bone - do ni amuziĝu kun iomete pli granda bloko de teksto. 235 00:20:03,950 --> 00:20:08,310 Ni diras tion vico tie - ĉi aserto tie. 236 00:20:08,310 --> 00:20:11,360 La povo de regula esprimo estas ke ili povas specifi ŝablonoj 237 00:20:11,360 --> 00:20:13,390 ne nur fiksaj karakteroj. 238 00:20:14,900 --> 00:20:18,790 Ni kreu - ni nomas tion bloko. 239 00:20:22,400 --> 00:20:27,110 Tiam ni legos ĉiujn kiuj in 240 00:20:28,890 --> 00:20:50,820 Kaj tiam havas - ni faru ĉiuj =, do kio estas iuj aferoj ni povus serĉi en ĉi tie profite? 241 00:20:50,820 --> 00:20:54,070 Ni povus serĉi la esprimo orelon. 242 00:20:55,050 --> 00:21:01,520 Ne tre interesa. Kion pri tio? Ni vidos kio okazas. 243 00:21:03,710 --> 00:21:05,710 Mi donis ĝin problemo. 244 00:21:06,380 --> 00:21:10,750 Do iu numero de aĵoj antaŭ re kaj ĉiujn. 245 00:21:10,750 --> 00:21:15,630 Por ke devus reveni ĉion de la komenco ĝis ĉiuj re eble paron foje. 246 00:21:18,800 --> 00:21:21,970 Kaj tiam tie ni havas la povon de regulaj esprimoj estas ke ili 247 00:21:21,970 --> 00:21:24,900 povas specifi ŝablonoj ne ĝuste gravuloj tie estas. 248 00:21:24,900 --> 00:21:28,510 Do la tuta vojo ĝis la fino re, ĝi komenciĝis per la maldekstra plej kaj estis avida. 249 00:21:30,710 --> 00:21:32,710 Ni vidu - kion alian ni povus serĉi. 250 00:21:32,710 --> 00:21:39,860 Mi supozas ke unu afero, se vi interesiĝas pri serĉante la pronomojn ŝi kaj li, 251 00:21:39,860 --> 00:21:44,600 vi povus kontroli por s estante egalaj al 0 aŭ 1 252 00:21:44,600 --> 00:21:49,710 kaj la esprimo, kaj ke ĝi probable ne tuj revenos - 253 00:21:49,710 --> 00:21:58,020 ho, mi supozas ke revenis li ĉar ni rigardas la povo, tiu tago, tie estas. 254 00:22:00,590 --> 00:22:06,270 Ni klopodu specifante ke tiu devas veni en la komenco de io. 255 00:22:06,640 --> 00:22:09,530 Ni vidu se tiu falas for. 256 00:22:09,530 --> 00:22:19,630 Do ni povas fari grason, kaj tie ni ne akiras nenion ĉar ŝi kaj li 257 00:22:19,630 --> 00:22:22,870 ne okazas en tiu frazo. 258 00:22:24,960 --> 00:22:30,410 Granda. Bone - do reen al la kato tie. 259 00:22:30,410 --> 00:22:35,720 Tiel kompleksa ŝablonoj estas vundi la cerbo. 260 00:22:35,720 --> 00:22:40,500 Tial estas kial ni uzas regulajn esprimojn por eviti tiujn temojn. 261 00:22:40,820 --> 00:22:43,520 >> Do jen kelkaj aliaj utilaj manieroj vi povas ludi ĉirkaŭe kun. 262 00:22:43,520 --> 00:22:50,290 Ni rigardis serĉo hodiaŭ, sed vi ankaŭ povas uzi partio, disigo, findall kaj grupoj. 263 00:22:50,290 --> 00:22:53,970 Do aliaj malvarmeta aĵoj vi povas fari kun regulaj esprimoj krom nur 264 00:22:53,970 --> 00:22:58,870 serĉante mastrojn prenas mastro kaj tenante ĉiujn turnirojn - 265 00:22:58,870 --> 00:23:02,530 ĝiaj variabloj - kaj tiam uzanta tiuj en via kodo poste. 266 00:23:02,850 --> 00:23:05,980 Tio eblas sufiĉe utila. Aliaj aĵoj povus rakonti. 267 00:23:05,980 --> 00:23:11,720 Do ni povas kalkuli la nombron de okazoj de regula esprimo ŝablono, 268 00:23:11,720 --> 00:23:13,960 kaj tio estas kion ni povas uzi grupoj por. 269 00:23:13,960 --> 00:23:17,550 Kaj aliaj modoj tiel estas ankaŭ ebla. 270 00:23:18,040 --> 00:23:22,980 Do mi simple deziras rakonti iom pli pri aliaj manieroj vi povas uzi regulajn esprimojn. 271 00:23:22,980 --> 00:23:29,100 >> Do pli progresinta apliko estas en fuzzy kongruanta. 272 00:23:29,100 --> 00:23:33,450 Do se vi serĉas teksto por la esprimo, Julio Cezaro, 273 00:23:33,450 --> 00:23:37,740 kaj vi vidos ĉu Gajo Julio Cezaro aux la nomon Julio Cezaro en aliaj lingvoj: 274 00:23:37,740 --> 00:23:44,400 tiam vi povus ankaŭ volas atribui iujn pezon al tiuj valoroj. 275 00:23:44,400 --> 00:23:48,930 Kaj se ĝi estas sufiĉe proksime - se ĝi transiras certa sojlo - tiam vi volas 276 00:23:48,930 --> 00:23:50,860 por povi akcepti Julius Cezaro. 277 00:23:50,860 --> 00:24:00,580 Do estas kelkaj malsamaj realigoj por tiu en kelkaj aliaj lingvoj tiel. 278 00:24:02,580 --> 00:24:08,420 Jen kelkaj aliaj iloj, regex Pal - oportuna iom app linio por 279 00:24:08,420 --> 00:24:12,190 kontrolu ĉu via regulaj esprimoj estas formitaj ĝuste. 280 00:24:12,190 --> 00:24:18,500 Ankaŭ estas sendependa iloj kiuj vi povas kuri el via labortablo 281 00:24:18,500 --> 00:24:22,100 kiel Ultra Beko, kaj tiel kiel ĵus recetarios. 282 00:24:22,100 --> 00:24:25,410 Do se vi faras projekton kiu engaĝas barelon de regulaj esprimoj 283 00:24:25,410 --> 00:24:29,810 ĉi tio estas probable la lokon por iri ekstere de la medio de hodiaŭ. 284 00:24:31,520 --> 00:24:35,770 Kaj tiam nur por doni al vi la senton de kiel komuna estas 285 00:24:35,770 --> 00:24:44,090 estas grep en Unikso, Perl havas integrita, kaj C estas PCRE por C. 286 00:24:44,090 --> 00:24:48,890 Kaj tiam ĉiuj tiuj aliaj lingvoj ankaŭ havas regulan esprimon pakoj 287 00:24:48,890 --> 00:24:52,020 kiuj operacias kun esence la sama sintakso ni akiris guston de hodiaŭ. 288 00:24:52,020 --> 00:24:54,790 PHP, Java, Ruby, kaj tiel plu. 289 00:24:56,080 --> 00:24:58,980 >> Google Code Search estas vere menciindas: ĝi estas unu el la 290 00:24:58,980 --> 00:25:05,720 relative malmultaj aplikoj tie kiu permesas al la publikaj aliri 291 00:25:05,720 --> 00:25:07,800 lia datumbazo uzante regulaj esprimoj. 292 00:25:07,800 --> 00:25:12,920 Do, se vi rigardas en Google Code Search vi povas trovi kodo 293 00:25:12,920 --> 00:25:16,880 se vi serĉas petskribon de kiel funkcio povus esti uzita, 294 00:25:16,880 --> 00:25:21,610 vi povas uzi regulan esprimon por trovi ke funkcio estante uzita en ĉiaj malsamaj kazoj. 295 00:25:21,610 --> 00:25:28,000 Vi povus serĉi fwrite, kaj tiam vi povus serĉi la flago de skribu aŭ legi 296 00:25:28,000 --> 00:25:32,000 se vi volas ekzemplon de fwrite esti uzata en tiu kazo. 297 00:25:33,530 --> 00:25:37,010 Do la saman aferon tie, kaj jen kelkaj referencoj. 298 00:25:37,010 --> 00:25:40,990 Ĉi tiu estos havebla surlinia tiel, do irante antaŭen se 299 00:25:40,990 --> 00:25:45,560 vi volas rigardi Python, grep, Perl - vi nur volas akiri iun inspiro 300 00:25:45,560 --> 00:25:50,650 aŭ se vi volas rigardi pli al la teorio jen kelkaj bonaj salti for lokoj. 301 00:25:50,650 --> 00:25:53,870 Dankon tre multe. 302 00:25:58,470 --> 00:25:59,910 [CS50.TV]