1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminar: Pattern Matching me shprehje të rregullta] 2 00:00:02,000 --> 00:00:04,000 [Gjoni Mussman-Universiteti i Harvardit] 3 00:00:04,000 --> 00:00:07,220 [Kjo është CS50.-CS50.TV] 4 00:00:07,780 --> 00:00:11,610 Mirë. E pra, të mirëpritur të gjithë. Kjo është CS50 2012. 5 00:00:11,780 --> 00:00:16,610 Emri im është John, dhe unë do të flasim sot rreth shprehje të rregullta. 6 00:00:16,610 --> 00:00:22,530 Shprehjet e rregullta është kryesisht një mjet, por edhe përdorur ndonjëherë 7 00:00:22,530 --> 00:00:28,650 në kod në mënyrë aktive në thelb ndeshjen modele dhe vargjet. 8 00:00:28,650 --> 00:00:33,800 Kështu që këtu është një komik nga web RockSonte. 9 00:00:34,440 --> 00:00:42,370 Në këtë komik ekziston një mister vrasje ku ka vrasës 10 00:00:42,370 --> 00:00:47,860 pasuar dikush mbi pushim, dhe protagonistët duhet te 11 00:00:47,860 --> 00:00:52,500 kërkoni përmes 200 megabajt e-mail në kërkim për një adresë. 12 00:00:52,500 --> 00:00:56,090 Dhe ata janë gati të heqin dorë kur dikush që e di shprehje të rregullta - 13 00:00:56,090 --> 00:01:00,550 me sa duket një superhero - sulet poshtë dhe shkruan disa kodin 14 00:01:00,550 --> 00:01:02,970 dhe zgjidh misterin vrasje. 15 00:01:02,970 --> 00:01:07,370 Pra, duket se do të jetë diçka që ju do të fuqizohet për të bërë 16 00:01:07,370 --> 00:01:09,370 pas këtij seminari. 17 00:01:09,370 --> 00:01:12,250 Ne jemi vetëm duke shkuar për të siguruar një hyrje konçize për gjuhën 18 00:01:12,250 --> 00:01:16,770 dhe do t'ju japë mundësi të mjaftueshme për të shkuar pas më shumë burime në tuaj. 19 00:01:17,680 --> 00:01:21,700 >> Pra, shprehjet e rregullta duken në thelb si kjo. 20 00:01:22,930 --> 00:01:25,550 Kjo është një shprehje e rregullt në Ruby. 21 00:01:25,550 --> 00:01:29,280 Kjo nuk është tmerrësisht i ndryshëm në të gjithë gjuhët. 22 00:01:29,690 --> 00:01:37,630 Ne kemi vetëm mbi godet për të filluar dhe të shënojë shprehjen e rregullt në Ruby. 23 00:01:37,630 --> 00:01:42,880 Dhe kjo është një shprehje e rregullt për të kërkuar në adresën model email. 24 00:01:42,880 --> 00:01:49,160 Pra, ne shohim në pak pare duket për ndonjë karakter alfanumerike. 25 00:01:50,500 --> 00:01:54,880 Kjo është për shkak se adresat e-mail shpesh duhet të fillojë me një karakter alfabetik. 26 00:01:55,460 --> 00:01:59,330 Dhe pastaj çdo karakter të veçantë pasohet me simbolin @. 27 00:01:59,330 --> 00:02:03,260 Dhe pastaj e njëjta gjë për emrin e domain. 28 00:02:03,260 --> 00:02:10,030 Dhe pastaj në mes të 2 dhe 4 karaktere për të kërkuar com.,. Net, dhe kështu me radhë. 29 00:02:10,850 --> 00:02:13,200 Kështu që është një tjetër shembull i shprehjes rregullt. 30 00:02:13,200 --> 00:02:17,270 Pra, shprehjet e rregullta janë protokollet për gjetjen e patters në tekst. 31 00:02:17,270 --> 00:02:21,130 Ata bëjnë krahasime, zgjedhje, dhe zëvendësimet. 32 00:02:21,690 --> 00:02:27,970 Pra, një shembull i tretë është gjetur të gjitha numrat e telefonit mbaron në 54 në një directory. 33 00:02:27,970 --> 00:02:34,360 Pra, para se të rips David up directory CS50 ne mund të kërkoni për 34 00:02:34,360 --> 00:02:40,450 një model ku ne kemi kllapa atëherë 3 numra pastaj përfundojnë parantezë, 35 00:02:40,450 --> 00:02:44,070 3 më shumë numra, një dash, 2 numra, dhe pastaj 54. 36 00:02:44,070 --> 00:02:48,310 Dhe kjo do të jetë në thelb se si kemi ardhur deri me një shprehje të rregullta për të kërkuar për atë. 37 00:02:49,150 --> 00:02:52,960 >> Pra, ka - ne kemi bërë disa gjëra në CS50 që janë pak si 38 00:02:52,960 --> 00:02:59,740 shprehje të rregullta, kështu që - për shembull - në dosjen dictionary.C 39 00:02:59,740 --> 00:03:04,720 për të vendosur spell check problem që ju mund të keni përdorur fscanf 40 00:03:04,720 --> 00:03:07,930 për të lexuar në një fjalë nga fjalori. 41 00:03:07,930 --> 00:03:16,240 Dhe ju mund të shihni 45s përqindja është duke kërkuar për një varg prej 45 karaktereve. 42 00:03:16,240 --> 00:03:20,020 Pra, kjo është disi si një shprehje rudimentare rregullt. 43 00:03:21,150 --> 00:03:26,060 Dhe ju mund të ketë ndonjë 45 karaktere që përshtaten faturë në atje 44 00:03:26,060 --> 00:03:28,080 dhe marr ato ide. 45 00:03:28,080 --> 00:03:33,480 Dhe pastaj shembulli i dytë në problemin e programimit më të fundit të internetit 46 00:03:33,480 --> 00:03:40,760 përcaktuar në kodin distro për PHP ne fakt kemi një shprehje e thjeshtë të rregullt. 47 00:03:40,760 --> 00:03:46,790 Dhe kjo është vetëm thjesht në kërkim të kontrolloni nëse faqja web që është kaluar në 48 00:03:46,790 --> 00:03:51,940 përputhet ose login logout ose regjistrohuni. PHP. 49 00:03:52,220 --> 00:03:57,910 Dhe pastaj kthehen e vërtetë apo e rreme bazuar në atë përputhen rregullt shprehjes. 50 00:03:59,400 --> 00:04:01,740 >> Pra, kur ju përdorni shprehje e rregullt? 51 00:04:01,740 --> 00:04:04,820 Pse jeni sot këtu? 52 00:04:05,330 --> 00:04:08,480 Pra, ju nuk dëshironi të përdorni shprehje të rregullta, kur ka diçka që 53 00:04:08,480 --> 00:04:11,640 bën punë për ju edhe më lehtë. 54 00:04:11,640 --> 00:04:15,510 Pra, XML dhe HTML në të vërtetë janë mjaft të ndërlikuar 55 00:04:15,510 --> 00:04:18,480 për të shkruar shprehje të rregullta për të siç do të shohim në pak. 56 00:04:19,110 --> 00:04:23,280 Pra, ka Parsers dedikuara për këto gjuhë. 57 00:04:24,170 --> 00:04:30,060 Ju gjithashtu duhet të jetë në rregull me të humbura të tregtisë dhe saktësisë shpesh. 58 00:04:30,060 --> 00:04:36,220 Nëse jeni duke u përpjekur - kështu që ne pamë një shprehje e rregullt për një adresë email-i, 59 00:04:37,370 --> 00:04:42,590 por thonë se ju të kërkuar një adresë email të veçantë dhe gradualisht 60 00:04:42,590 --> 00:04:48,570 shprehje e rregullt mund të bëhet më komplekse si ajo u bë më e saktë. 61 00:04:49,580 --> 00:04:52,260 Kështu që do të jetë një tregti off. 62 00:04:52,260 --> 00:04:55,330 Ju duhet të jetë i sigurt që ju jeni duke bërë në rregull me shprehje të rregullta. 63 00:04:55,330 --> 00:04:57,920 Nëse ju e dini saktësisht çfarë ju jeni duke kërkuar për të ajo mund të bëjë më shumë kuptim 64 00:04:57,920 --> 00:05:02,070 për të vënë në kohë dhe të shkruani një parser më efektive. 65 00:05:02,070 --> 00:05:06,980 Dhe në fund nuk është një çështje historike me rregullsinë 66 00:05:06,980 --> 00:05:08,940 e shprehjeve dhe gjuhëve. 67 00:05:08,940 --> 00:05:12,960 Shprehjet e rregullta në të vërtetë janë shumë më të fuqishme se 68 00:05:12,960 --> 00:05:16,450 shprehje të rregullta në thonë se në një kuptim formal. 69 00:05:17,130 --> 00:05:20,150 >> Kështu që unë nuk dua të shkoj shumë larg në teorinë formal, 70 00:05:20,150 --> 00:05:24,000 por shumicën e gjuhëve që ne kod në të vërtetë nuk janë të rregullta. 71 00:05:24,000 --> 00:05:29,110 Dhe kjo është arsyeja pse shprehje të rregullta ndonjëherë nuk janë konsideruar të sigurt që të gjithë. 72 00:05:29,670 --> 00:05:33,150 Pra, në thelb ekziston një hierarki Chomsky për gjuhët, 73 00:05:33,150 --> 00:05:38,400 dhe shprehje të rregullta janë ndërtuar duke përdorur bashkim, varg, 74 00:05:38,400 --> 00:05:41,810 dhe operacionin yll Kleene që ne do të shohim në pak minuta. 75 00:05:43,130 --> 00:05:48,860 Nëse jeni të interesuar në teori nuk është mjaft shumë ndodh atje nën kapuç. 76 00:05:50,360 --> 00:05:55,880 >> Pra, një histori e shkurtër - vetëm për kontekstin këtu - grupe të rregullta doli 77 00:05:55,880 --> 00:05:59,580 në vitet 1950, dhe pastaj kemi pasur redaktorët thjeshtë që 78 00:05:59,580 --> 00:06:03,300 inkorporuar shprehje të rregullta - vetëm në kërkim për vargjet. 79 00:06:03,570 --> 00:06:09,110 Grep - cila është një linjë komande mjet - ishte një nga të parë 80 00:06:09,110 --> 00:06:14,160 mjete shumë të njohura që të inkorporuara shprehje të rregullta në 1960. 81 00:06:14,160 --> 00:06:20,560 Në vitet '80, Perl është ndërtuar - është një gjuhë programimi që 82 00:06:20,560 --> 00:06:24,110 inkorporon shprehje të rregullta shumë të dukshëm. 83 00:06:24,550 --> 00:06:30,130 Dhe pastaj më shumë kohët e fundit ne kemi pasur Perl shprehje compatible rregullt 84 00:06:30,130 --> 00:06:35,870 protokollet thelb në gjuhë të tjera që përdorin shumë i sintaksës njëjtë. 85 00:06:36,630 --> 00:06:39,840 Natyrisht ngjarja më e rëndësishme ishte në vitin 2008 86 00:06:39,840 --> 00:06:43,040 ku kishte parë Kombëtare rregullt Shprehjet Dita, 87 00:06:43,040 --> 00:06:47,350 të cilën unë besoj se është data 1 nqs ju doni për të festuar këtë. 88 00:06:48,430 --> 00:06:50,840 >> Teoria Përsëri, vetëm pak më shumë këtu. 89 00:06:52,180 --> 00:06:55,320 Pra, ka disa mënyra të ndryshme të ndërtimit shprehje të rregullta. 90 00:06:55,950 --> 00:07:02,050 Një mënyrë e thjeshtë është për të ndërtuar shprehjen që ju jeni duke shkuar për të 91 00:07:02,050 --> 00:07:07,500 drejtuar në vargun e interpretojnë - në thelb të ndërtuar një të vogël mini-program që 92 00:07:07,500 --> 00:07:11,870 do të analizojnë copa të një varg dhe të shohim, "Oh, kjo nuk i përshtatet shprehjen e rregullt apo jo?" 93 00:07:12,250 --> 00:07:14,250 Dhe pastaj të drejtuar atë. 94 00:07:14,250 --> 00:07:17,300 Pra, nëse ju keni një shprehje shumë të vogël të rregullt, kjo është ndoshta 95 00:07:17,300 --> 00:07:19,380 mënyra më efikase për të bërë atë. 96 00:07:20,090 --> 00:07:25,420 Dhe pastaj, nëse ju - një tjetër opsion është për të mbajtur rindërtimin e 97 00:07:25,420 --> 00:07:30,260 shprehje si ju shkoni, dhe kjo është mundësia simulojnë. 98 00:07:30,440 --> 00:07:37,690 Dhe këto përpjekje të hershme në algoritme shprehje të rregullta ishin 99 00:07:37,690 --> 00:07:44,330 relativisht e thjeshtë dhe relativisht të shpejtë, por nuk kanë një shumë fleksibilitet. 100 00:07:44,330 --> 00:07:47,500 Pra, për të bërë edhe disa nga gjërat që ne do të shikojmë në 101 00:07:47,500 --> 00:07:52,860 sot ne kemi pasur të bëjmë shprehjen e më komplekse të rregullt 102 00:07:52,860 --> 00:07:56,650 Implementimi që janë potencialisht shumë më i ngadalshëm, kështu që është diçka që të mbajnë në mend 103 00:07:57,510 --> 00:08:02,920 Ka gjithashtu një shprehje e rregullt mohimi i sulmit shumëllojshmëri 104 00:08:02,920 --> 00:08:08,330 që të shfrytëzojnë potencialin për këto implementime të reja të 105 00:08:08,330 --> 00:08:10,930 shprehje të rregullta për të bërë shumë e ndërlikuar. 106 00:08:11,570 --> 00:08:15,650 Dhe në shumë kuptim të njëjtë që e pamë në sulmet e del nga shtrati tampon, 107 00:08:15,650 --> 00:08:21,610 ju keni sulmet që punojnë duke bërë sythe gjithkund rekursive që 108 00:08:21,610 --> 00:08:24,400 muar kapacitetin e kujtesës. 109 00:08:24,780 --> 00:08:29,540 Dhe nga rruga Regexen është një nga plurals zyrtare të rregullt shprehjes 110 00:08:29,540 --> 00:08:32,890 në analogji me demat në anglo-sakson. 111 00:08:33,500 --> 00:08:40,169 >> Mirë, kështu që Biblioteka Python shumë prej jush këtu në personin kanë Macs, 112 00:08:40,169 --> 00:08:43,860 kështu që ju në fakt mund të tërheqë këtë deri në ekranin tuaj. 113 00:08:43,860 --> 00:08:47,480 Shprehjet e rregullta janë ndërtuar në Python. 114 00:08:48,070 --> 00:08:53,020 Dhe kështu Python është preloaded në Macs dhe gjithashtu në dispozicion online në këtë link. 115 00:08:53,770 --> 00:08:57,350 Pra, nëse ju jeni të shikuar ju mund të pauzë dhe sigurohuni që ju keni Python 116 00:08:58,080 --> 00:09:00,170 si ne të luajnë rreth këtu. 117 00:09:00,780 --> 00:09:06,420 Nuk është një manual në internet, kështu që nëse ju vetëm shkruani Python në kompjuterin tuaj 118 00:09:06,420 --> 00:09:10,500 ju do të shihni se versioni vjen deri në terminal. 119 00:09:11,070 --> 00:09:17,720 Kështu që kam dhënë një lidhje për të manualit për versionin 2 të Python, si dhe një fletë të mashtrojnë. 120 00:09:17,720 --> 00:09:23,100 Nuk është një Version 3 e Python, por Mac juaj nuk domosdoshmërisht 121 00:09:23,100 --> 00:09:25,130 që vijnë me preloaded. 122 00:09:25,130 --> 00:09:27,360 Pra, nuk është tmerrësisht i ndryshëm. 123 00:09:27,360 --> 00:09:33,270 Mirë, kështu që disa nga bazat e përdorur shprehje të rregullta në Python. 124 00:09:34,080 --> 00:09:42,650 >> Kështu që këtu unë përdorur një shprehje shumë të thjeshtë, kështu që unë e bëri Re Python import 125 00:09:43,750 --> 00:09:47,070 dhe pastaj mori rezultatin e re.search. 126 00:09:47,070 --> 00:09:49,910 Dhe kërko merr 2 argumente. 127 00:09:49,910 --> 00:09:56,040 E para është shprehja e rregullt, dhe i dyti eshte tekst 128 00:09:56,040 --> 00:09:58,290 ose string ju dëshironi për të analizuar. 129 00:09:58,290 --> 00:10:01,210 Dhe atëherë unë shtypur nga result.group. 130 00:10:01,580 --> 00:10:05,860 Pra, këto janë 2 funksionet themelore që ne do të shohim sot 131 00:10:06,790 --> 00:10:10,170 në të mësuar në lidhje me shprehje të rregullta. 132 00:10:10,170 --> 00:10:12,880 Pra, vetëm të thyer kjo shprehje e rregullt këtu 133 00:10:12,880 --> 00:10:21,770 h dhe pastaj \ w dhe pastaj kështu m \ w vetëm pranon ndonjë karakter alfabetik në atje. 134 00:10:21,850 --> 00:10:26,820 Pra, këtu ne jemi duke kërkuar për një "H" dhe pastaj një tjetër karakter alfabetik 135 00:10:26,820 --> 00:10:30,060 dhe pastaj m, kështu që këtu se do të përputhen me proshutë 136 00:10:30,060 --> 00:10:34,480 në "Abraham Lincoln proshutë dhe sanduiçe." 137 00:10:35,040 --> 00:10:37,150 Ky është rezultati i atij grupi. 138 00:10:37,680 --> 00:10:43,130 Një tjetër gjë që ne mund të bëjmë është të përdorni vargjet tona para se të tekstit në Python. 139 00:10:43,130 --> 00:10:46,220 Kështu që unë mendoj se unë do të shkoj përpara dhe të tërheqë atë deri këtu. 140 00:10:46,220 --> 00:10:49,210 Re Python importit. 141 00:10:50,070 --> 00:10:54,000 Dhe në qoftë se unë do të bëjë të njëjtën gjë - le të themi tekst është, 142 00:10:55,390 --> 00:11:00,800 "Abrahami," le të zoom in - ne do të shkojmë atje. 143 00:11:01,610 --> 00:11:06,430 Teksti është: "Abraham ha proshutë." 144 00:11:07,460 --> 00:11:15,260 Mirë, dhe pastaj të rezultojë = re.search. 145 00:11:16,260 --> 00:11:22,020 Dhe pastaj shprehje ynë mund të jetë h, dhe pastaj unë do të bëj dot m. 146 00:11:22,020 --> 00:11:26,280 Pra, vetëm merr dot asnjë karakter që nuk është një linjë e re duke përfshirë numrat, 147 00:11:26,280 --> 00:11:28,650 Shenjat përqindje, diçka të tillë. 148 00:11:28,650 --> 00:11:38,030 Dhe pastaj Teksti - boom - dhe pastaj result.group--po. 149 00:11:38,030 --> 00:11:41,820 Pra, kjo është vetëm se si për të zbatuar funksionet bazë këtu. 150 00:11:42,300 --> 00:11:55,110 Nëse do të kishim një unazë tekst që - që teksti i çmendur - të përfshira thonë se shumë e godet mbrapa 151 00:11:55,110 --> 00:12:01,180 dhe vargjet brenda dhe gjërat që mund të duken si sekuenca të shpëtuar, 152 00:12:01,180 --> 00:12:08,480 atëherë ne ndoshta dëshironi të përdorni të dhëna të papërpunuara tekst për t'u siguruar se është pranuar. 153 00:12:08,480 --> 00:12:14,120 Dhe kjo thjesht duket si kjo. 154 00:12:14,120 --> 00:12:17,810 Pra, në qoftë se ne ishim duke kërkuar për secilin prej tyre në atje ne nuk duhet të gjejnë asgjë. 155 00:12:19,070 --> 00:12:21,680 Por kjo është se si ju do të zbatojë atë, vetëm para se vargu i 156 00:12:21,680 --> 00:12:24,990 shprehje e rregullt ju vënë r letër. 157 00:12:26,150 --> 00:12:30,260 >> Mirë, kështu që le të do të mbajë. 158 00:12:30,260 --> 00:12:33,730 Të gjithë të drejtë - kështu që le të shohim në një çift modelet e përsëritura këtu. 159 00:12:34,750 --> 00:12:39,150 Pra, një gjë që ju doni të bëni është të përsëris gjëra 160 00:12:40,040 --> 00:12:42,480 si ju jeni në kërkim përmes tekstit. 161 00:12:42,480 --> 00:12:48,300 Pra, për të bërë një pasuar nga ndonjë numër i B - ju bëni * ab. 162 00:12:48,630 --> 00:12:51,620 Dhe pastaj ka një seri rregullash të tjera. 163 00:12:51,620 --> 00:12:54,380 Dhe ju mund të shikoni të gjitha këto ngrihen, unë vetëm do të drejtuar përmes disa nga 164 00:12:54,380 --> 00:12:57,630 më të përdorura zakonisht ato. 165 00:12:57,630 --> 00:13:03,920 Pra ab + është një pasohet nga ndonjë N madhe se 0 të b. 166 00:13:04,510 --> 00:13:08,000 ab? eshte nje pasuar nga 0 ose 1; b. 167 00:13:09,190 --> 00:13:18,580 ab {N} eshte nje pasuar nga I I B, dhe pastaj kështu on. 168 00:13:18,580 --> 00:13:22,820 Nëse ju keni 2 numra në formatimin e teksteve kaçurrel ju jeni duke specifikuar një gamë të 169 00:13:23,300 --> 00:13:25,440 që mund të jetë ndoshta përputhet. 170 00:13:26,390 --> 00:13:30,420 Pra, ne do të shikojmë më shumë në një çift modele të përsëritura në një minutë. 171 00:13:31,960 --> 00:13:42,300 Pra 2 gjëra për të mbajtur në mendje kur duke përdorur këto mjete model përputhen këtu. 172 00:13:42,300 --> 00:13:52,120 Pra, thonë se ne duam të shikojmë në hm e "Abraham Lincoln bën sanduiçe proshutë." 173 00:13:52,120 --> 00:13:55,230 Kështu që unë ndryshuar emrin Abraham Lincoln-së Abrahamit. 174 00:13:55,230 --> 00:14:00,290 Dhe tani ne jemi duke kërkuar për atë që është kthyer nga ky funksionin e kërkimit, 175 00:14:00,290 --> 00:14:03,270 dhe vetëm ajo kthehet proshutë në këtë rast. 176 00:14:03,620 --> 00:14:08,080 Dhe kjo e bën për shkak se kërkoni vetëm natyrisht merr radhën e majtë më. 177 00:14:08,080 --> 00:14:12,130 Dhe të gjitha shprehje të rregullta nëse ju specifikoni ndryshe do të bëjë këtë. 178 00:14:12,830 --> 00:14:18,880 Nëse ne të kërkuar për të gjetur të gjitha ka një funksion për atë - të gjeni të gjitha. 179 00:14:18,880 --> 00:14:35,100 Kështu që vetëm mund të duken si të gjithë re.findall = ('h.m', tekst) 180 00:14:35,100 --> 00:14:44,540 dhe pastaj all.group (). 181 00:14:44,540 --> 00:14:51,040 Të gjitha prodhon si proshutë dhe proshutë, në këtë rast të dy vargjet në çdo Abrahamit proshutë. 182 00:14:51,610 --> 00:14:55,110 Kështu që është një tjetër alternativë. 183 00:14:56,250 --> 00:15:06,940 >> Great. Gjë tjetër për të mbajtur në mend është se shprehje të rregullta të marrë më të madhe intuitive. 184 00:15:06,940 --> 00:15:09,520 Le të shikojmë në këtë shembull. 185 00:15:10,200 --> 00:15:16,070 Ne e bëmë këtë kërkim majtë më këtu, dhe atëherë unë u përpoq një kërkim të madh 186 00:15:16,070 --> 00:15:18,800 duke përdorur operatorin Kleene yll. 187 00:15:18,800 --> 00:15:24,180 Pra për të, "Abraham Lincoln bën sanduiçe proshutë," dhe unë vetëm kam kthyer 188 00:15:24,180 --> 00:15:26,280 M si pasojë. 189 00:15:26,280 --> 00:15:31,670 Arsyeja për këtë ishte gabim që unë mund të ketë marrë ndonjë numër të 190 00:15:31,670 --> 00:15:36,140 h për shkak se unë nuk specifikon asgjë për të shkuar në mes h dhe m. 191 00:15:36,140 --> 00:15:42,010 Shembulli i vetëm që ka pasur m - vetëm shembuj atje me m në të 192 00:15:42,010 --> 00:15:46,220 dhe çdo numri i të h ishin vetëm m string. 193 00:15:46,490 --> 00:15:51,850 Pastaj unë u përpoq përsëri, thashë, "Mirë, le të marrë grupin aktual më të madh këtu". 194 00:15:51,850 --> 00:15:59,670 Dhe atëherë unë e bëri h. * M, kështu që vetëm të kthehet ndonjë numër të karaktereve mes h dhe m. 195 00:16:00,280 --> 00:16:02,950 Dhe në qoftë se ju jeni vetëm duke filluar nga dhe duke menduar, "Oh, në rregull, edhe kjo do të 196 00:16:02,950 --> 00:16:11,560 merrni mua proshutë, "ai në fakt merr gjithçka nga h në Abraham Lincoln 197 00:16:11,560 --> 00:16:13,690 të gjithë rrugën deri në fund të proshutë. 198 00:16:14,040 --> 00:16:18,110 Ajo është i babëzitur; ajo sheh h - e gjithë kjo teksti tjetër - m, 199 00:16:18,110 --> 00:16:21,280 dhe kjo është ajo që ajo merr in 200 00:16:22,060 --> 00:16:27,480 Kjo është një veçanërisht skandaloze - kjo është një tipar ne gjithashtu mund të 201 00:16:27,480 --> 00:16:30,670 specifikojë për mos të jetë ajo babëzitur duke përdorur funksione të tjera. 202 00:16:31,480 --> 00:16:34,490 Por kjo është diçka që ne duhet të mbani në mend sidomos 203 00:16:34,490 --> 00:16:38,720 kur kërkoni në tekst HTML, e cila është një arsye që 204 00:16:38,720 --> 00:16:41,500 shprehje të rregullta janë të vështira për HTML. 205 00:16:42,460 --> 00:16:46,310 Sepse në qoftë se ju keni një tag HTML hapur dhe atëherë shumë gjëra në mes 206 00:16:46,310 --> 00:16:49,820 dhe pastaj disa të tjera të mbyllura HTML tag shumë më vonë në program, 207 00:16:49,820 --> 00:16:55,420 ju keni ngrënë vetëm deri një shumë të HTML kodit tuaj ndoshta gabimisht. 208 00:16:56,200 --> 00:17:01,840 >> Të gjithë të drejtë - aq më shumë karaktere të veçanta, si shumë gjuhë të tjera, 209 00:17:01,840 --> 00:17:04,780 ne shpëtojnë duke përdorur plagë. 210 00:17:04,780 --> 00:17:10,329 Pra, ne mund të përdorni dot që të specifikojë ndonjë karakter, përveç për një linjë të re. 211 00:17:10,329 --> 00:17:14,550 Ne mund të përdorim w shpëtuar të specifikoni ndonjë karakter alfabetik. 212 00:17:14,550 --> 00:17:20,329 Dhe duke arratisjeje d analogji për çdo numër të plotë - karakter numerik. 213 00:17:20,630 --> 00:17:27,440 Ne mund të specifikoni - ne mund të përdorni kllapa për të specifikojë shprehjet e lidhura. 214 00:17:27,440 --> 00:17:30,970 Pra, kjo do të pranojë a, b, ose c. 215 00:17:31,320 --> 00:17:37,000 Dhe ne gjithashtu mund të specifikojë ose opsionet për secilin A ose B. 216 00:17:37,000 --> 00:17:41,110 Për shembull - në qoftë se ne kemi qenë duke kërkuar për mundësitë e shumta 217 00:17:41,110 --> 00:17:44,940 në kllapa ne mund të përdorim operatorin apo si në - 218 00:17:44,940 --> 00:17:52,480 kështu që le të kthehemi në këtë shembull këtu. 219 00:17:53,000 --> 00:17:59,790 Dhe tani le të marrë - le të kthehemi në këtë shembull këtu, dhe pastaj 220 00:17:59,790 --> 00:18:12,290 marrë AE - kështu që kjo duhet të kthehet - Unë mendoj se kjo është ende Abrahami. 221 00:18:12,290 --> 00:18:17,410 Pra, kjo - në qoftë se ne bëjmë të gjitha - e madhe. 222 00:18:17,410 --> 00:18:22,700 Pra, le të rinovuar tekstin këtu. 223 00:18:22,700 --> 00:18:34,690 "Abrahami ha proshutë, ndërsa hemming e tij -. Ndërsa Hemming" Great. 224 00:18:44,090 --> 00:18:47,330 All. Great. Tani kemi marrë, proshutë proshutë, hem dhe. 225 00:18:48,510 --> 00:18:59,370 Ndërsa Hemming - ndërsa gjallë të tij - ndërsa të gjallë hem atij. Great. 226 00:19:00,350 --> 00:19:03,250 E njëjta gjë. 227 00:19:03,820 --> 00:19:09,180 Tani të gjitha kthen ende vetëm proshutë, proshutë, dhe hem pa picking deri në lëvrij apo atij. 228 00:19:09,940 --> 00:19:22,600 Great - kështu që çfarë nëse ne të kërkuar për të parë në qoftë se - kështu që ne mund të bëjmë 229 00:19:23,510 --> 00:19:33,810 apo atë - ne do të kthehen në atë. 230 00:19:34,810 --> 00:19:45,760 Mirë - kështu - të gjithë të drejtë - në pozicione ju gjithashtu mund të përdorni të caret apo shenjë e dollarit 231 00:19:45,760 --> 00:19:49,350 të specifikojë që ju jeni duke kërkuar për diçka në fillim apo në fund të një vargut. 232 00:19:50,260 --> 00:19:52,260 Ose fillimin ose fund të një fjale. 233 00:19:52,400 --> 00:19:54,470 Kjo është një mënyrë për të përdorur këtë. 234 00:19:55,630 --> 00:20:01,160 >> Mirë - kështu që le të luajnë rreth me një bllok pak më të madh të tekstit. 235 00:20:03,950 --> 00:20:08,310 Le të na thonë këtë rresht këtu - këtë deklaratë këtu. 236 00:20:08,310 --> 00:20:11,360 Fuqia e të shprehurit të rregullt është se ata mund të specifikoni modele 237 00:20:11,360 --> 00:20:13,390 nuk fikse vetëm karaktere. 238 00:20:14,900 --> 00:20:18,790 Le ta bëjmë - le të quajmë këtë bllok. 239 00:20:22,400 --> 00:20:27,110 Pastaj ne do të lexoni të gjithë se in 240 00:20:28,890 --> 00:20:50,820 Dhe pastaj të ketë një - le të na bëjë të gjitha =; kështu që çfarë janë disa gjëra që ne mund të kërkoni këtu fitim? 241 00:20:50,820 --> 00:20:54,070 Ne mund të shikoni për veshin e shprehjes. 242 00:20:55,050 --> 00:21:01,520 Jo shumë interesante. Si në lidhje me këtë? Ne do të shohim se çfarë ndodh. 243 00:21:03,710 --> 00:21:05,710 I dha asaj një problem. 244 00:21:06,380 --> 00:21:10,750 Pra, çdo numër i gjërave para se të ri dhe të gjithë. 245 00:21:10,750 --> 00:21:15,630 Kështu që duhet të kthehet gjithçka nga fillimi deri në të gjitha re ndoshta një herë çift. 246 00:21:18,800 --> 00:21:21,970 Dhe atëherë këtu kemi fuqia e shprehje të rregullta është se ata 247 00:21:21,970 --> 00:21:24,900 mund të specifikoni modele jo vetëm karaktere janë këtu. 248 00:21:24,900 --> 00:21:28,510 Pra, të gjithë rrugën deri në finale ri, ajo filloi me më të majtë dhe ishte lakmitar. 249 00:21:30,710 --> 00:21:32,710 Le të shohim - çfarë tjetër mund të shikoni për. 250 00:21:32,710 --> 00:21:39,860 I guess një gjë në qoftë se ju keni qenë të interesuar në kërkim për përemrave ajo dhe ai, 251 00:21:39,860 --> 00:21:44,600 ju mund të kontrolloni për s është e barabartë me 0 ose 1 252 00:21:44,600 --> 00:21:49,710 dhe shprehje ai, dhe që është ndoshta nuk do të kthehet - 253 00:21:49,710 --> 00:21:58,020 oh, unë mendoj se ai u kthye, sepse atje ne jemi duke kërkuar në pushtet, atë ditë, këtu janë. 254 00:22:00,590 --> 00:22:06,270 Le të përpiqemi specifikuar se kjo ka për të ardhur në fillim të diçkaje. 255 00:22:06,640 --> 00:22:09,530 Le të shohim nëse që bie jashtë. 256 00:22:09,530 --> 00:22:19,630 Pra, ne mund të bëjmë yndyrë, dhe atje ne nuk do të marrë asgjë, sepse ajo dhe ai 257 00:22:19,630 --> 00:22:22,870 nuk ndodhin në këtë frazë. 258 00:22:24,960 --> 00:22:30,410 Great. Mirë - kështu përsëri në mace këtu. 259 00:22:30,410 --> 00:22:35,720 Pra, modelet komplekse po dëmton trurin. 260 00:22:35,720 --> 00:22:40,500 Pra, kjo është arsyeja pse ne përdorim shprehje të rregullta për të shmangur këto çështje. 261 00:22:40,820 --> 00:22:43,520 >> Pra, këtu janë disa mënyra të tjera të dobishme që ju mund të luajnë rreth me të. 262 00:22:43,520 --> 00:22:50,290 Ne shikuar në kërkim sot, por ju mund të përdorë gjithashtu, ndarje ndeshje, findall, dhe grupeve. 263 00:22:50,290 --> 00:22:53,970 Gjëra të tjera të ftohtë kështu që ju mund të bëni me shprehje të rregullta përveç vetëm 264 00:22:53,970 --> 00:22:58,870 kërkuar për modele është duke marrë një model dhe mbajtjen gjitha ndeshjet - 265 00:22:58,870 --> 00:23:02,530 Variablat e saj - dhe pastaj duke përdorur ato në kodin tuaj më vonë. 266 00:23:02,850 --> 00:23:05,980 Kjo mund të jetë mjaft e dobishme. Gjëra të tjera mund të jenë të numëruar. 267 00:23:05,980 --> 00:23:11,720 Pra, ne mund të llogarisë numrin e rasteve të një model shprehje të rregullta, 268 00:23:11,720 --> 00:23:13,960 dhe kjo është ajo që ne mund të përdorim për grupe. 269 00:23:13,960 --> 00:23:17,550 Dhe mënyra të tjera, si dhe janë gjithashtu të mundshme. 270 00:23:18,040 --> 00:23:22,980 Kështu që unë vetëm dua të flas pak më shumë në lidhje me mënyra të tjera që ju mund të përdorni shprehje të rregullta. 271 00:23:22,980 --> 00:23:29,100 >> Pra, një aplikim më të avancuar është në matching fuzzy. 272 00:23:29,100 --> 00:23:33,450 Pra, nëse ju jeni duke kërkuar për një tekst për shprehjen, Julius Caesar, 273 00:23:33,450 --> 00:23:37,740 dhe ju shihni ose Gaius Julius Cezarit apo emri i Julius Caesar në gjuhë të tjera, 274 00:23:37,740 --> 00:23:44,400 atëherë ju mund të dëshironi të caktojë një peshë të këtyre vlerave. 275 00:23:44,400 --> 00:23:48,930 Dhe në qoftë se ajo është afër të mjaftueshme - në qoftë se ajo kalon një kufi të caktuar - atëherë ju doni 276 00:23:48,930 --> 00:23:50,860 të jetë në gjendje të pranojë Julius Caesar. 277 00:23:50,860 --> 00:24:00,580 Pra, nuk janë një çift implementime të ndryshme për të cilat në disa gjuhëve të tjera si. 278 00:24:02,580 --> 00:24:08,420 Këtu janë disa mjete të tjera, Regex Pal - një app pak i dobishëm online për të 279 00:24:08,420 --> 00:24:12,190 kontrolloni nëse shprehjet tuaja të rregullta janë të përbërë saktë. 280 00:24:12,190 --> 00:24:18,500 Ka edhe mjete të pavarur që ju mund të drejtuar nga tuaj desktop 281 00:24:18,500 --> 00:24:22,100 si Pico ultra, dhe, si dhe librat e gatimit vetëm. 282 00:24:22,100 --> 00:24:25,410 Pra, nëse ju jeni duke bërë një projekt që përfshin një ton të shprehje të rregullta 283 00:24:25,410 --> 00:24:29,810 kjo është ndoshta vendi për të shkuar jashtë sferës së sotme. 284 00:24:31,520 --> 00:24:35,770 Dhe pastaj vetëm për të ju jap një kuptim të asaj se si është e zakonshme 285 00:24:35,770 --> 00:24:44,090 ekziston grep në Unix, Perl ka ndërtuar-në, dhe C nuk është PCRE për C. 286 00:24:44,090 --> 00:24:48,890 Dhe pastaj të gjitha këto gjuhë të tjera gjithashtu kanë paketa të rregullta shprehje 287 00:24:48,890 --> 00:24:52,020 që veprojnë me thelb të njëjtën sintaksë Ne morëm një shije e sotme. 288 00:24:52,020 --> 00:24:54,790 PHP, Java, Ruby, dhe kështu me radhë. 289 00:24:56,080 --> 00:24:58,980 >> Google Kërko Code është në të vërtetë vlen të përmendet, ajo është një nga 290 00:24:58,980 --> 00:25:05,720 aplikacione relativisht pak atje që lejon publikun të hyrë 291 00:25:05,720 --> 00:25:07,800 Baza e të dhënave të saj duke përdorur shprehje të rregullta. 292 00:25:07,800 --> 00:25:12,920 Pra, nëse ju shikoni në Google Search Kodit ju mund të gjeni kodin 293 00:25:12,920 --> 00:25:16,880 në qoftë se ju jeni duke kërkuar për një shembull se si një funksion mund të përdoret, 294 00:25:16,880 --> 00:25:21,610 ju mund të përdorni një shprehje e rregullt për të gjetur atë funksion duke u përdorur në të gjitha llojet e raste të ndryshme. 295 00:25:21,610 --> 00:25:28,000 Ju mund të shikoni për fwrite, dhe pastaj ju mund të shikoni për flamurin e shkruani ose lexuar 296 00:25:28,000 --> 00:25:32,000 në qoftë se ju të kërkuar një shembull të fwrite duke u përdorur në atë rast. 297 00:25:33,530 --> 00:25:37,010 Pra, e njëjta gjë atje, dhe këtu janë disa referenca. 298 00:25:37,010 --> 00:25:40,990 Kjo do të jetë në dispozicion online, si edhe, kështu që duke shkuar përpara, nëse 299 00:25:40,990 --> 00:25:45,560 ju doni të shikoni në grep, Python, Perl - ju thjesht dëshironi të merrni disa frymëzim 300 00:25:45,560 --> 00:25:50,650 ose në qoftë se ju doni të shikoni më shumë në teori këtu janë disa të mira duke kërcyer off vende. 301 00:25:50,650 --> 00:25:53,870 Shumë falemnderit. 302 00:25:58,470 --> 00:25:59,910 [CS50.TV]