1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminārs: Pattern saskaņošana ar regulārām izteiksmēm] 2 00:00:02,000 --> 00:00:04,000 [John Mussman-Harvard University] 3 00:00:04,000 --> 00:00:07,220 [Tas ir CS50.-CS50.TV] 4 00:00:07,780 --> 00:00:11,610 Labi. Nu, welcome ikviens. Tas ir CS50 2012. 5 00:00:11,780 --> 00:00:16,610 Mans vārds ir Jānis, un es būs runāt šodien par regulārām izteiksmēm. 6 00:00:16,610 --> 00:00:22,530 Regulāras izteiksmes ir galvenokārt līdzeklis, bet arī dažreiz izmanto 7 00:00:22,530 --> 00:00:28,650 kodā aktīvi būtībā atbilstu modeļus un stīgas. 8 00:00:28,650 --> 00:00:33,800 Tātad, šeit ir tīmekļa komikss no XKCD. 9 00:00:34,440 --> 00:00:42,370 Šajā komikss ir slepkavība noslēpums kur killer ir 10 00:00:42,370 --> 00:00:47,860 seko kāds atvaļinājumā, un galvenie varoņi ir 11 00:00:47,860 --> 00:00:52,500 pārlūkot 200 megabaitu e-pastiem, kas meklē adresi. 12 00:00:52,500 --> 00:00:56,090 Un viņi ir gatavi padoties, ja kāds, kurš zina, regulāras izteiksmes - 13 00:00:56,090 --> 00:01:00,550 iespējams supervaronis - kritīs lejup uz leju un raksta daži kodu 14 00:01:00,550 --> 00:01:02,970 un atrisina slepkavības noslēpumu. 15 00:01:02,970 --> 00:01:07,370 Tātad iespējams, ka būs kaut kas jums būs pilnvarota to darīt 16 00:01:07,370 --> 00:01:09,370 Pēc šī semināra. 17 00:01:09,370 --> 00:01:12,250 Mēs esam tikai gatavojas sniegt īsu ievadu valodu 18 00:01:12,250 --> 00:01:16,770 un jums ir pietiekami līdzekļi, lai iet pēc vairāk resursu par savu. 19 00:01:17,680 --> 00:01:21,700 >> Tātad, regulāras izteiksmes izskatās būtībā kā šis. 20 00:01:22,930 --> 00:01:25,550 Tas ir regulāra izteiksme Ruby. 21 00:01:25,550 --> 00:01:29,280 Tas nav briesmīgi atšķirīgs dažādās valodās. 22 00:01:29,690 --> 00:01:37,630 Mums ir tikai par simbolos, lai sāktu un atzīmējiet regulāro izteiksmi Ruby. 23 00:01:37,630 --> 00:01:42,880 Un tas ir regulāra izteiksme, lai meklētu e-pasta adresi modeli. 24 00:01:42,880 --> 00:01:49,160 Tā mēs redzam, pie pirmās mazliet meklē jebkuru burtciparu rakstzīmi. 25 00:01:50,500 --> 00:01:54,880 Tas ir tāpēc, ka e-pasta adreses bieži vien ir jāsāk ar alfabēta burts. 26 00:01:55,460 --> 00:01:59,330 Un tad kāds īpašais raksturs seko @ simbolu. 27 00:01:59,330 --> 00:02:03,260 Un tad pats par domēna nosaukumu. 28 00:02:03,260 --> 00:02:10,030 Un tad starp 2 un 4 rakstzīmes meklēt. Com, net,. Un tā tālāk. 29 00:02:10,850 --> 00:02:13,200 Tātad tas ir vēl viens piemērs regulāras izteiksmes. 30 00:02:13,200 --> 00:02:17,270 Tātad, regulāras izteiksmes ir protokoli, lai atrastu patters tekstā. 31 00:02:17,270 --> 00:02:21,130 Viņiem salīdzinājumus, atlasi, un nomaiņu. 32 00:02:21,690 --> 00:02:27,970 Tātad Trešais piemērs ir atrast visus tālruņu numurus, kas beidzas ar 54 direktorijā. 33 00:02:27,970 --> 00:02:34,360 Tātad, pirms David RIP augšup pa CS50 direktorijā, mēs varētu meklēt 34 00:02:34,360 --> 00:02:40,450 modelis, kur mums ir iekavas, tad 3 numurus, tad beigās iekavās, 35 00:02:40,450 --> 00:02:44,070 3 un vairāk numurus, domuzīme, 2 numuri, un pēc tam 54. 36 00:02:44,070 --> 00:02:48,310 Un tas būtu būtiski, kā mēs nākam klajā ar regulāru izteiksmi, lai meklētu to. 37 00:02:49,150 --> 00:02:52,960 >> Tā ir - mēs esam darījuši dažas lietas, CS50, ka ir mazliet kā 38 00:02:52,960 --> 00:02:59,740 regulāras izteiksmes, tāpēc - piemēram, - šajā dictionary.C failā 39 00:02:59,740 --> 00:03:04,720 par pareizrakstības pārbaudi problēmu kopumu, jums var būt izmantoti fscanf 40 00:03:04,720 --> 00:03:07,930 lasīt vārdu no vārdnīcas. 41 00:03:07,930 --> 00:03:16,240 Un jūs varat redzēt procents 45s meklē virkni 45 rakstzīmes. 42 00:03:16,240 --> 00:03:20,020 Tātad, tas ir nedaudz, piemēram, rudimentāru regulāras izteiksmes. 43 00:03:21,150 --> 00:03:26,060 Un jūs varat būt kādi 45 rakstzīmes, kas fit rēķinu tur 44 00:03:26,060 --> 00:03:28,080 un izvēlēties tos uz augšu. 45 00:03:28,080 --> 00:03:33,480 Un tad otrs piemērs jaunākajā web programmēšanas problēmu 46 00:03:33,480 --> 00:03:40,760 noteikts distro kodu php mums patiešām ir vienkārši regulāra izteiksme. 47 00:03:40,760 --> 00:03:46,790 Un tas viens ir vienkārši vēlas, lai pārbaudītu, vai mājas lapa, kas tiek nodota 48 00:03:46,790 --> 00:03:51,940 atbilst vai nu piesakieties vai logout reģistrā. PHP. 49 00:03:52,220 --> 00:03:57,910 Un tad atgriežas patiess vai nepatiess, pamatojoties uz šo regulāru izteiksmi iekārtošanu. 50 00:03:59,400 --> 00:04:01,740 >> Tātad, ja jūs izmantojat regulāru izteiksmi? 51 00:04:01,740 --> 00:04:04,820 Kāpēc jūs šeit šodien? 52 00:04:05,330 --> 00:04:08,480 Tātad, jūs nevēlaties izmantot regulāras izteiksmes, ja tur ir kaut kas 53 00:04:08,480 --> 00:04:11,640 dara to darbu jums, pat vieglāk. 54 00:04:11,640 --> 00:04:15,510 Tātad, XML un HTML ir faktiski diezgan grūts 55 00:04:15,510 --> 00:04:18,480 rakstīt regulāras izteiksmes, lai kā mēs redzēsim mazliet. 56 00:04:19,110 --> 00:04:23,280 Tātad ir veltīta parsers par šīm valodām. 57 00:04:24,170 --> 00:04:30,060 Jūs arī ir nepieciešama, lai būtu labi ar kompromisus un precizitāti bieži. 58 00:04:30,060 --> 00:04:36,220 Ja jūs mēģināt, - lai mēs redzējām regulāru izteiksmi uz e-pasta adresi, 59 00:04:37,370 --> 00:04:42,590 bet saka, jūs vēlētos īpašu e-pasta adresi un pakāpeniski 60 00:04:42,590 --> 00:04:48,570 regulāra izteiksme varētu kļūt sarežģītāka, jo tā kļuva precīzāki. 61 00:04:49,580 --> 00:04:52,260 Tātad tas būtu viens tirdzniecības off. 62 00:04:52,260 --> 00:04:55,330 Jums ir jābūt pārliecinātiem, ka jums ir labi pelnīt ar regulāru izteiksmi. 63 00:04:55,330 --> 00:04:57,920 Ja jūs zināt, tieši to, ko jūs meklējat, tas varētu daudz lietderīgāk 64 00:04:57,920 --> 00:05:02,070 īstenot laiku un rakstīt efektīvāku parsētājs. 65 00:05:02,070 --> 00:05:06,980 Un visbeidzot ir vēsturisks jautājums, ar regularitāti 66 00:05:06,980 --> 00:05:08,940 izpausmes un valodu. 67 00:05:08,940 --> 00:05:12,960 Regulāras izteiksmes faktiski ir daudz spēcīgāks nekā 68 00:05:12,960 --> 00:05:16,450 regulāras izteiksmes vienu teikt formāli. 69 00:05:17,130 --> 00:05:20,150 >> Tāpēc es negribu iet pārāk tālu uz oficiālu teoriju, 70 00:05:20,150 --> 00:05:24,000 bet lielākā daļa valodas, mēs kods patiesībā nav pareizi. 71 00:05:24,000 --> 00:05:29,110 Un tas ir iemesls, kāpēc regulāras izteiksmes dažkārt netiek uzskatīts viss, kas droši. 72 00:05:29,670 --> 00:05:33,150 Tātad būtībā ir Chomsky hierarhija valodām, 73 00:05:33,150 --> 00:05:38,400 un regulāras izteiksmes ir veidot, izmantojot savienību, konkatenācijas, 74 00:05:38,400 --> 00:05:41,810 un to Kleene zvaigžņu darbību, ka mēs redzēsim pēc dažām minūtēm. 75 00:05:43,130 --> 00:05:48,860 Ja Jūs interesē teorētiski ir diezgan daudz tur notiek saskaņā ar kapuci. 76 00:05:50,360 --> 00:05:55,880 >> Tik īsu vēsturi - tikai kontekstā šeit - regulāras komplekti nāca klajā 77 00:05:55,880 --> 00:05:59,580 1950, un tad mums bija vienkārši redaktori, ka 78 00:05:59,580 --> 00:06:03,300 jāiekļauj regulāras izteiksmes - vienkārši meklējot stīgām. 79 00:06:03,570 --> 00:06:09,110 Grep - kas ir komandrindas rīks - bija viens no pirmā 80 00:06:09,110 --> 00:06:14,160 ļoti populārs instrumenti, kas iekļauti regulāras izteiksmes 1960. 81 00:06:14,160 --> 00:06:20,560 In '80s, Perl tika uzcelta - ir programmēšanas valoda, kas 82 00:06:20,560 --> 00:06:24,110 ietver regulāras izteiksmes ļoti pamanāmi. 83 00:06:24,550 --> 00:06:30,130 Un tad vēl nesen mums bija Perl saderīgu regulāru izteiksmi 84 00:06:30,130 --> 00:06:35,870 protokoli galvenokārt citās valodās, kas izmanto daudz to pašu sintaksi. 85 00:06:36,630 --> 00:06:39,840 Protams, svarīgākais notikums bija 2008 86 00:06:39,840 --> 00:06:43,040 kur bija valsts pirmais Regular Expressions diena, 87 00:06:43,040 --> 00:06:47,350 kas, manuprāt, ir jūnijs 1 Ja jūs vēlaties, lai svinētu to. 88 00:06:48,430 --> 00:06:50,840 >> Atkal, tikai nedaudz vairāk teorija šeit. 89 00:06:52,180 --> 00:06:55,320 Tātad ir pāris dažādi veidi, būvniecības regulāras izteiksmes. 90 00:06:55,950 --> 00:07:02,050 Viens vienkāršs veids ir veidot izteiksmi, ka jūs gatavojaties 91 00:07:02,050 --> 00:07:07,500 palaist uz virkni interpretēt - būtībā veidot maz mini-programmu, kas 92 00:07:07,500 --> 00:07:11,870 analizēs gabalus stīgu un redzēt, "Ak, tas ietilptu regulāru izteiksmi, vai ne?" 93 00:07:12,250 --> 00:07:14,250 Un tad palaist to. 94 00:07:14,250 --> 00:07:17,300 Tātad, ja jums ir ļoti maza regulāru izteiksmi, tas ir iespējams, 95 00:07:17,300 --> 00:07:19,380 visefektīvākais veids, kā to darīt. 96 00:07:20,090 --> 00:07:25,420 Un tad, ja jūs - vēl viena iespēja ir, lai saglabātu rekonstruējot 97 00:07:25,420 --> 00:07:30,260 izteiksme, kā jums iet, un tas ir simulēt iespēja. 98 00:07:30,440 --> 00:07:37,690 Un šie agri mēģinājumi regulāras izteiksmes algoritmiem, bija 99 00:07:37,690 --> 00:07:44,330 salīdzinoši vienkārši un salīdzinoši ātri, bet nebija lielu elastību. 100 00:07:44,330 --> 00:07:47,500 Tātad, lai darīt vēl dažas lietas, ko mēs gatavojamies apskatīt 101 00:07:47,500 --> 00:07:52,860 šodien mums bija darīt vairāk sarežģītu regulāru izteiksmi 102 00:07:52,860 --> 00:07:56,650 implementācijas, kas ir potenciāli daudz lēnāk, tāpēc tas ir kaut kas jāpatur prātā 103 00:07:57,510 --> 00:08:02,920 Ir arī regulāras izteiksmes noliegums uzbrukuma šķirnes 104 00:08:02,920 --> 00:08:08,330 ka izmantot iespējas šiem jaunāku implementāciju 105 00:08:08,330 --> 00:08:10,930 regulāras izteiksmes, lai kļūtu ļoti sarežģīta. 106 00:08:11,570 --> 00:08:15,650 Un daudz pašā nozīmē, ka mēs redzējām bufera pārpildes uzbrukumiem, 107 00:08:15,650 --> 00:08:21,610 Jums ir uzbrukumi, kas darbojas, padarot rekursīvas cilpas, ka 108 00:08:21,610 --> 00:08:24,400 pārsniegts jaudas atmiņas. 109 00:08:24,780 --> 00:08:29,540 Un ar to, kā Regexen ir viens no oficiālajām daudzskaitļus regulāras izteiksmes 110 00:08:29,540 --> 00:08:32,890 pēc analoģijas ar vēršiem tajā anglosakšu. 111 00:08:33,500 --> 00:08:40,169 >> Labi, tā Python bibliotēka daudzi no jums šeit personīgi ir Mac, 112 00:08:40,169 --> 00:08:43,860 lai jūs faktiski var pull šo up ekrānā. 113 00:08:43,860 --> 00:08:47,480 Regulāras izteiksmes ir iebūvēts Python. 114 00:08:48,070 --> 00:08:53,020 Un tā Python tiek ielādētas uz Mac, un arī pieejams interneta vietnē šīs saites. 115 00:08:53,770 --> 00:08:57,350 Tātad, ja jūs skatītos varat pauzēt un pārliecinieties, ka Jums ir Python 116 00:08:58,080 --> 00:09:00,170 kā mēs spēlējam šeit tuvumā. 117 00:09:00,780 --> 00:09:06,420 Ir tiešsaistes rokasgrāmatu, tādēļ, ja jūs vienkārši ierakstiet Python datorā 118 00:09:06,420 --> 00:09:10,500 Jūs redzēsiet, ka versija nāk klajā terminālī. 119 00:09:11,070 --> 00:09:17,720 Tāpēc es sniedz saiti uz rokasgrāmatā par Python 2 versija, kā arī apkrāptu loksnes. 120 00:09:17,720 --> 00:09:23,100 Ir 3 versija Python, bet jūsu Mac nav obligāti 121 00:09:23,100 --> 00:09:25,130 nāk ar to ielādētas. 122 00:09:25,130 --> 00:09:27,360 Tātad nav briesmīgi atšķirīgs. 123 00:09:27,360 --> 00:09:33,270 Labi, tāpēc daži pamati, izmantojot regulāras izteiksmes Python. 124 00:09:34,080 --> 00:09:42,650 >> Tātad, šeit es ļoti vienkāršu izteiksmes, tāpēc es darīju Python importa re 125 00:09:43,750 --> 00:09:47,070 un pēc tam ņēma rezultātu re.search. 126 00:09:47,070 --> 00:09:49,910 Un meklēt aizņem 2 argumentus. 127 00:09:49,910 --> 00:09:56,040 Pirmais ir regulāra izteiksme, un otrais ir teksta 128 00:09:56,040 --> 00:09:58,290 vai string jūs vēlaties, lai analizētu. 129 00:09:58,290 --> 00:10:01,210 Un tad Es izdrukāt out result.group. 130 00:10:01,580 --> 00:10:05,860 Tātad šie ir 2 galvenās funkcijas mēs gatavojamies šodien redzam 131 00:10:06,790 --> 00:10:10,170 mācīšanās par regulārām izteiksmēm. 132 00:10:10,170 --> 00:10:12,880 Tik vienkārši salaužot šo regulāro izteiksmi šeit 133 00:10:12,880 --> 00:10:21,770 h un pēc tam \ w un tad esmu tik \ w vienkārši akceptē jebkādu burtam tur. 134 00:10:21,850 --> 00:10:26,820 Tātad, šeit mēs meklējam "h" un tad vēl alfabēta burtu 135 00:10:26,820 --> 00:10:30,060 un tad m, tāpēc šeit, kas atbilstu šķiņķis 136 00:10:30,060 --> 00:10:34,480 kas, "Abraham Lincoln un šķiņķi sviestmaizes." 137 00:10:35,040 --> 00:10:37,150 Tas ir rezultāts šajā grupā. 138 00:10:37,680 --> 00:10:43,130 Vēl viena lieta, ko mēs varam darīt, ir izmantot mūsu pirms teksta virknes Python. 139 00:10:43,130 --> 00:10:46,220 Tāpēc es domāju, es iet uz priekšu un velciet, ka šeit. 140 00:10:46,220 --> 00:10:49,210 Python importa re. 141 00:10:50,070 --> 00:10:54,000 Un, ja man bija darīt to pašu - teiksim teksts ir, 142 00:10:55,390 --> 00:11:00,800 "Ābrahāms," ļaujiet mums pietuvinātu - tur mēs ejam. 143 00:11:01,610 --> 00:11:06,430 Teksts ir, "Ābrahāms ēd šķiņķis". 144 00:11:07,460 --> 00:11:15,260 Labi, tad rezultāts = re.search. 145 00:11:16,260 --> 00:11:22,020 Un tad mūsu izteiksme var būt h, un pēc tam es do dot m. 146 00:11:22,020 --> 00:11:26,280 Tik dot tikai ņem jebkuru rakstzīmi, kas nav jauna līnija, ieskaitot numurus, 147 00:11:26,280 --> 00:11:28,650 procentu zīmes, kaut kā tā. 148 00:11:28,650 --> 00:11:38,030 Un tad teksts - bums - un tad result.group--jā. 149 00:11:38,030 --> 00:11:41,820 Tātad tas ir tikai to, kā īstenot pamata funkcionalitāti šeit. 150 00:11:42,300 --> 00:11:55,110 Ja mums bija teksta gredzenu, ka - kas traks tekstu - iekļauta teikt daudz atpakaļ simbolos 151 00:11:55,110 --> 00:12:01,180 un virknes iekšpusē un lietas, kas varētu izskatīties evakuācijas sekvences, 152 00:12:01,180 --> 00:12:08,480 tad mēs, iespējams, vēlas izmantot izejvielas teksta ievadi, lai pārliecinātos, ka ir pieņemts. 153 00:12:08,480 --> 00:12:14,120 Un tas tikai izskatās, ka. 154 00:12:14,120 --> 00:12:17,810 Tātad, ja mēs meklējam katru no tiem, kas tur mums nevajadzētu atrast neko. 155 00:12:19,070 --> 00:12:21,680 Bet tas ir, kā jūs varētu īstenot, tikai pirms virkne 156 00:12:21,680 --> 00:12:24,990 regulāra izteiksme jūs nodot burtu r. 157 00:12:26,150 --> 00:12:30,260 >> Labi, tāpēc ļaujiet mums saglabāt turpinās. 158 00:12:30,260 --> 00:12:33,730 Visas tiesības - tāpēc ļaujiet mums apskatīt pāris atkārtojas modeļiem šeit. 159 00:12:34,750 --> 00:12:39,150 Tik viena lieta, ko vēlaties darīt, ir atkārtot lietas 160 00:12:40,040 --> 00:12:42,480 kā jūs meklēt, izmantojot tekstu. 161 00:12:42,480 --> 00:12:48,300 Tātad, lai darīt seko jebkurš skaits b - jūs ab *. 162 00:12:48,630 --> 00:12:51,620 Un tad tur ir citi noteikumi virkne too. 163 00:12:51,620 --> 00:12:54,380 Un jūs varat apskatīt visus šos up, es ņemšu tikai palaist caur kādu no 164 00:12:54,380 --> 00:12:57,630 Visbiežāk izmanto ones. 165 00:12:57,630 --> 00:13:03,920 Tā AB + ir neseko kāds N ir lielāks par 0 un b. 166 00:13:04,510 --> 00:13:08,000 ab? ir kam ar 0 vai 1 un b. 167 00:13:09,190 --> 00:13:18,580 ab {N} ir kam ar N no B, un pēc tam tā tālāk. 168 00:13:18,580 --> 00:13:22,820 Ja jums ir 2 numurus, cirtaini lencēm jūs norādot diapazonu 169 00:13:23,300 --> 00:13:25,440 kas var būt iespējams saskaņota. 170 00:13:26,390 --> 00:13:30,420 Tāpēc mēs izskatās vairāk pēc pāris atkārtotiem modeļus minūti. 171 00:13:31,960 --> 00:13:42,300 Tātad 2 lietas, kas jāpatur prātā, izmantojot šo rakstu saskaņošanas instrumentus šeit. 172 00:13:42,300 --> 00:13:52,120 Tā teikt, mēs vēlamies apskatīt HM ir, "Abraham Lincoln padara šķiņķa sviestmaizes." 173 00:13:52,120 --> 00:13:55,230 Tāpēc es mainīja Abraham Lincoln nosaukumu uz Ābrahāmu. 174 00:13:55,230 --> 00:14:00,290 Un tagad mēs meklējam to, kas tiek atgriezta šī meklēšanas funkciju, 175 00:14:00,290 --> 00:14:03,270 un tas tikai atgriež šķiņķa šajā gadījumā. 176 00:14:03,620 --> 00:14:08,080 Un tas, ka tāpēc, ka meklētājprogrammas tikai dabiski notiek kreiso visvairāk rindā. 177 00:14:08,080 --> 00:14:12,130 Un visi regulāras izteiksmes, ja norādāt citādi būs jādara. 178 00:14:12,830 --> 00:14:18,880 Ja mēs vēlējāmies, lai atrastu visu, kas ir par šo funkciju - atrast visu. 179 00:14:18,880 --> 00:14:35,100 Tā, ka var tikai izskatās visu = re.findall ("h.m", teksts) 180 00:14:35,100 --> 00:14:44,540 un pēc tam all.group (). 181 00:14:44,540 --> 00:14:51,040 Visi ražo gan šķiņķi un šķiņķi, šajā gadījumā gan no šajā Ābrahama stīgas šķiņķa. 182 00:14:51,610 --> 00:14:55,110 Tāpēc, ka ir vēl viena iespēja. 183 00:14:56,250 --> 00:15:06,940 >> Lieliski. Otra lieta, kas jāpatur prātā, ir tas, ka regulāras izteiksmes veikt lielāko intuitīvi. 184 00:15:06,940 --> 00:15:09,520 Ļaujiet mums skatīties uz šo piemēru. 185 00:15:10,200 --> 00:15:16,070 Mēs to darījām, ka atstāja lielākā meklēt šeit, un tad es mēģināja lielāku meklēšanu 186 00:15:16,070 --> 00:15:18,800 izmantojot Kleene zvaigžņu operatoru. 187 00:15:18,800 --> 00:15:24,180 Tātad, "Abraham Lincoln liek šķiņķa sviestmaizes," un es tikai got atpakaļ 188 00:15:24,180 --> 00:15:26,280 m, kā rezultātā. 189 00:15:26,280 --> 00:15:31,670 Par šo kļūdu iemesls bija tas, ka es varētu būt veikusi jebkādu skaitu 190 00:15:31,670 --> 00:15:36,140 h ir tāpēc, ka man nav jānorāda kaut ko braukt starp h un m. 191 00:15:36,140 --> 00:15:42,010 Vienīgais piemērs, kas tur, kas bija m - vienīgie piemēri tur ar m tajā 192 00:15:42,010 --> 00:15:46,220 un jebkura h s skaits bija tikai virkne m. 193 00:15:46,490 --> 00:15:51,850 Tad es mēģināju vēlreiz, es teicu: "Labi, ļaujiet mums saņemt faktisko lielākā grupa šeit." 194 00:15:51,850 --> 00:15:59,670 Un tad es did h. * M, lai atgrieztos jebkuru rakstzīmju skaitu starp H un m. 195 00:16:00,280 --> 00:16:02,950 Un, ja Jums ir tikko sākusies, un domā: "Ak, labi, labi tas 196 00:16:02,950 --> 00:16:11,560 atnesiet man šķiņķis ", tā faktiski veic visu, sākot no h Abraham Lincoln 197 00:16:11,560 --> 00:16:13,690 visu ceļu līdz beigām šķiņķa. 198 00:16:14,040 --> 00:16:18,110 Tas ir mantkārīgs, tas redz h - tas viss cits teksts - m, 199 00:16:18,110 --> 00:16:21,280 un tas ir tas, ko tā veic collas 200 00:16:22,060 --> 00:16:27,480 Tas ir īpaši neredzēts - tā ir iespēja, mēs varam arī 201 00:16:27,480 --> 00:16:30,670 norādīt tā nav mantkārīgs, izmantojot citas funkcijas. 202 00:16:31,480 --> 00:16:34,490 Bet tas ir kaut kas mums ir jāpatur prātā, jo īpaši 203 00:16:34,490 --> 00:16:38,720 aplūkojot HTML tekstu, kas ir viens no iemesliem, kas 204 00:16:38,720 --> 00:16:41,500 regulāras izteiksmes ir grūti HTML. 205 00:16:42,460 --> 00:16:46,310 Jo, ja jums ir HTML atklātu tagu, un tad daudz stuff vidū 206 00:16:46,310 --> 00:16:49,820 un pēc tam daži citi HTML slēgtas tag daudz vēlāk programmā, 207 00:16:49,820 --> 00:16:55,420 tikko esat ēdis pat daudz jūsu HTML kodu, iespējams, kļūdas dēļ. 208 00:16:56,200 --> 00:17:01,840 >> Visas tiesības - tik daudz speciālās rakstzīmes, tāpat kā daudzās citās valodās, 209 00:17:01,840 --> 00:17:04,780 mēs izvairīties, izmantojot slīpsvītru. 210 00:17:04,780 --> 00:17:10,329 Tātad, mēs varam izmantot dot, lai norādītu jebkuru rakstzīmi, izņemot jaunu līniju. 211 00:17:10,329 --> 00:17:14,550 Mēs varam izmantot glābšanās W, lai norādīt jebkuru burtam. 212 00:17:14,550 --> 00:17:20,329 Un pēc analoģijas evakuācijas D vesels skaitlis - skaitliskā raksturs. 213 00:17:20,630 --> 00:17:27,440 Mēs varam norādīt - mēs varam izmantot iekavas, lai norādītu saistītus izteiksmes. 214 00:17:27,440 --> 00:17:30,970 Tātad tas varētu pieņemt, B vai c. 215 00:17:31,320 --> 00:17:37,000 Un mēs varam arī norādīt, vai iespējas, vai nu a vai b. 216 00:17:37,000 --> 00:17:41,110 Piemēram - ja mēs meklējam vairākiem iespējām 217 00:17:41,110 --> 00:17:44,940 Iekavās mēs varētu izmantot vai operatoru, kā arī - 218 00:17:44,940 --> 00:17:52,480 tāpēc ļaujiet mums iet atpakaļ uz šo piemēru šeit. 219 00:17:53,000 --> 00:17:59,790 Un tagad ļaujiet mums uzņemties - ļaujiet mums iet atpakaļ uz šo piemēru šeit, un pēc tam 220 00:17:59,790 --> 00:18:12,290 veikt AE - tā tas būtu jāatgriežas - Es domāju, tas joprojām ir Ābrahams. 221 00:18:12,290 --> 00:18:17,410 Tātad, tas ir - ja mēs visi - lieliski. 222 00:18:17,410 --> 00:18:22,700 Tātad, ļaujiet mums atjaunināt tekstu šeit. 223 00:18:22,700 --> 00:18:34,690 "Ābrahāms ēd šķiņķi, kamēr hemming viņa -. Kamēr hemming" Lieliski. 224 00:18:44,090 --> 00:18:47,330 Viss. Lieliski. Tagad mēs šķiņķis, šķiņķis, un hem. 225 00:18:48,510 --> 00:18:59,370 Kaut hemming - kamēr kolibri ar viņu - bet kolibri hem viņu. Lieliski. 226 00:19:00,350 --> 00:19:03,250 Pats. 227 00:19:03,820 --> 00:19:09,180 Tagad viss atgriežas vēl tikai šķiņķis, šķiņķis, un hm bez pacelt uz hum vai viņa klātbūtnē. 228 00:19:09,940 --> 00:19:22,600 Lielā - Tad ko, ja mēs vēlējāmies, lai apskatīt, vai nu ka - lai mēs varētu arī darīt 229 00:19:23,510 --> 00:19:33,810 viņam vai - mēs atgriezīsimies pie tā. 230 00:19:34,810 --> 00:19:45,760 Labi - tā - viss kārtībā - amatos, jūs varat izmantot arī caret vai dolāra zīmi 231 00:19:45,760 --> 00:19:49,350 , lai norādītu, ka jūs meklējat sākumā, kaut vai virknes beigām. 232 00:19:50,260 --> 00:19:52,260 Vai sākuma vai no vārda gals. 233 00:19:52,400 --> 00:19:54,470 Tas ir viens veids, kā izmantot to. 234 00:19:55,630 --> 00:20:01,160 >> Labi - tāpēc ļaujiet mums spēlēt aptuveni ar nedaudz lielāku teksta bloku. 235 00:20:03,950 --> 00:20:08,310 Teiksim šo rindu šeit - šo paziņojumu šeit. 236 00:20:08,310 --> 00:20:11,360 Regulāri izteiksmes spēks ir tas, ka viņi var norādīt modeļus 237 00:20:11,360 --> 00:20:13,390 ne tikai noteikta rakstzīmes. 238 00:20:14,900 --> 00:20:18,790 Ļaujiet mums padarīt - sauksim šo bloku. 239 00:20:22,400 --> 00:20:27,110 Tad mēs lasīt visu, kas iekšā 240 00:20:28,890 --> 00:20:50,820 Un tad ir - ļaujiet mums darīt visu =; tā, kādi ir dažas lietas, ko mēs varētu meklēt šeit izdevīgi? 241 00:20:50,820 --> 00:20:54,070 Mēs varētu meklēt izteiksmes auss. 242 00:20:55,050 --> 00:21:01,520 Ne ļoti interesanti. Kā par to? Redzēsim, kas notiks. 243 00:21:03,710 --> 00:21:05,710 Man bija tā problēma. 244 00:21:06,380 --> 00:21:10,750 Tāpēc jebkurš vairākas lietas, pirms re un viss. 245 00:21:10,750 --> 00:21:15,630 Tā, ka vajadzētu atgriezties viss no sākuma līdz pat visiem re varbūt pāris reizes. 246 00:21:18,800 --> 00:21:21,970 Un pēc tam šeit mums ir no regulāras izteiksmes spēks ir tāds, ka tie 247 00:21:21,970 --> 00:21:24,900 var norādīt modeļus ne tikai varoņi šeit ir. 248 00:21:24,900 --> 00:21:28,510 Tātad, visu ceļu līdz gala re, tas sākās ar kreiso visvairāk un bija mantkārīgs. 249 00:21:30,710 --> 00:21:32,710 Ļaujiet mums redzēt - ko vēl mēs varētu meklēt. 250 00:21:32,710 --> 00:21:39,860 Es domāju, viena lieta, ja jūs interesē meklē vietniekvārdu viņa un viņš, 251 00:21:39,860 --> 00:21:44,600 jūs varētu pārbaudīt s ir vienāds ar 0 vai 1 252 00:21:44,600 --> 00:21:49,710 un izteiksmes viņš, un tas, iespējams, nav gatavojas atgriezties - 253 00:21:49,710 --> 00:21:58,020 ak, es domāju, ka atpakaļ viņš tāpēc, ka mēs meklējam pie varas, ka dienā, šeit ir. 254 00:22:00,590 --> 00:22:06,270 Ļaujiet mums mēģināt norādot, ka tas ir jānāk sākumā kaut ko. 255 00:22:06,640 --> 00:22:09,530 Ļaujiet mums redzēt, ja tas nokrītas. 256 00:22:09,530 --> 00:22:19,630 Tātad, mēs varam darīt, taukus, un tur mēs nesaņem neko, jo viņa un viņš 257 00:22:19,630 --> 00:22:22,870 nav sastopami šo frāzi. 258 00:22:24,960 --> 00:22:30,410 Lieliski. Labi - lai atpakaļ uz kaķa šeit. 259 00:22:30,410 --> 00:22:35,720 Tātad sarežģītiem modeļiem nodara kaitējumu smadzenēm. 260 00:22:35,720 --> 00:22:40,500 Tātad, tas ir iemesls, kāpēc mēs izmantot regulāras izteiksmes, lai izvairītos no šīs problēmas. 261 00:22:40,820 --> 00:22:43,520 >> Tātad, šeit ir daži citi noderīgi veidi, jūs varat spēlēt aptuveni ar. 262 00:22:43,520 --> 00:22:50,290 Mēs paskatījās meklēšanas šodien, bet jūs varat arī izmantot mačs, split, findall, un grupas. 263 00:22:50,290 --> 00:22:53,970 Tātad citas labas lietas jūs varat darīt ar regulārām izteiksmēm turklāt tikai 264 00:22:53,970 --> 00:22:58,870 meklē modeļus veic modeli un turot visas spēles - 265 00:22:58,870 --> 00:23:02,530 tās mainīgie - un tad, izmantojot tos savu kodu vēlāk. 266 00:23:02,850 --> 00:23:05,980 Tas var būt diezgan noderīga. Citas lietas var skaitīšanas. 267 00:23:05,980 --> 00:23:11,720 Tātad, mēs varam rēķināties gadījumu skaitu regulāru izteiksmi modeli, 268 00:23:11,720 --> 00:23:13,960 un tas ir tas, ko mēs varam izmantot grupas par. 269 00:23:13,960 --> 00:23:17,550 Un citiem transporta veidiem, kā arī ir arī iespējams. 270 00:23:18,040 --> 00:23:22,980 Tāpēc es tikai gribu runāt mazliet vairāk par citiem veidiem, kā jūs varat izmantot regulāras izteiksmes. 271 00:23:22,980 --> 00:23:29,100 >> Tātad vēl viens progresīva ir izplūdušas iekārtošanu. 272 00:23:29,100 --> 00:23:33,450 Tātad, ja jūs meklējat tekstu izteiksmes, Julius Caesar, 273 00:23:33,450 --> 00:23:37,740 un jūs redzat, vai nu Gajs Jūlijs Cēzars vai nosaukumu Julius Caesar citās valodās, 274 00:23:37,740 --> 00:23:44,400 tad jūs varētu arī vēlaties piešķirt kādu nozīmi šīm vērtībām. 275 00:23:44,400 --> 00:23:48,930 Un, ja tas ir pietiekami tuvu, - ja tas šķērso noteiktu slieksni - tad jūs vēlaties 276 00:23:48,930 --> 00:23:50,860 lai varētu pieņemt Jūlijs Cēzars. 277 00:23:50,860 --> 00:24:00,580 Tātad ir pāris dažādas implementācijas, ka pēc pāris citās valodās, kā arī. 278 00:24:02,580 --> 00:24:08,420 Šeit ir daži citi instrumenti, regex Pal - parocīgs maz app internetā, lai 279 00:24:08,420 --> 00:24:12,190 pārbaudītu, vai jūsu regulāras izteiksmes sastāv pareizi. 280 00:24:12,190 --> 00:24:18,500 Ir arī savrupajam instrumenti, kas var palaist no darbvirsmas 281 00:24:18,500 --> 00:24:22,100 piemēram, Ultra Piko, un kā arī tikai pavārgrāmatas. 282 00:24:22,100 --> 00:24:25,410 Tātad, ja jūs darāt projektu, kas ietver ton regulāras izteiksmes 283 00:24:25,410 --> 00:24:29,810 tas ir iespējams, ir vieta, kur iet ārpus šodien. 284 00:24:31,520 --> 00:24:35,770 Un tad tikai, lai dotu jums sajūtu par to, cik bieži tas ir 285 00:24:35,770 --> 00:24:44,090 ir grep Unix, Perl ir iebūvēts, un C ir PCRE uz C. 286 00:24:44,090 --> 00:24:48,890 Un tad visi šie citas valodas ir arī regulāras izteiksmes paketes 287 00:24:48,890 --> 00:24:52,020 kas darbojas ar būtībā tādu pašu sintaksi mēs saņēmām garšu šodien. 288 00:24:52,020 --> 00:24:54,790 PHP, Java, Ruby, un tā tālāk. 289 00:24:56,080 --> 00:24:58,980 >> Google Code Search ir tiešām vērts pieminēt, tas ir viens no 290 00:24:58,980 --> 00:25:05,720 salīdzinoši maz pieteikumu, kas pastāv, kas ļauj sabiedrībai, lai piekļūtu 291 00:25:05,720 --> 00:25:07,800 tās datu bāzē, izmantojot regulāras izteiksmes. 292 00:25:07,800 --> 00:25:12,920 Tātad, ja paskatās uz Google Code Search, jūs varat atrast kodu 293 00:25:12,920 --> 00:25:16,880 Ja jūs meklējat, piemēram, kā funkciju varētu izmantot, 294 00:25:16,880 --> 00:25:21,610 Jūs varat izmantot regulāras izteiksmes, lai atrastu, ka funkcijas tiek izmantoti visos dažādos gadījumos veidu. 295 00:25:21,610 --> 00:25:28,000 Jūs varētu meklēt fwrite, un tad jūs varētu meklēt karogu rakstīt vai lasīt 296 00:25:28,000 --> 00:25:32,000 ja vēlaties piemēru fwrite tiek izmantots šajā lietā. 297 00:25:33,530 --> 00:25:37,010 Tātad pats tur, un šeit ir dažas atsauces. 298 00:25:37,010 --> 00:25:40,990 Tas būs pieejams tiešsaistē, kā arī, lai iet uz priekšu, ja 299 00:25:40,990 --> 00:25:45,560 Jūs vēlaties apskatīt Python, grep, Perl - jūs vienkārši vēlaties iegūt kādu iedvesmu 300 00:25:45,560 --> 00:25:50,650 vai, ja jūs vēlaties, lai izskatās vairāk uz teoriju šeit ir dažas labas jumping off vietās. 301 00:25:50,650 --> 00:25:53,870 Liels paldies. 302 00:25:58,470 --> 00:25:59,910 [CS50.TV]