1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Семинар: модел за појавување со регуларни изрази] 2 00:00:02,000 --> 00:00:04,000 [Џон Mussman-Универзитетот Харвард] 3 00:00:04,000 --> 00:00:07,220 [Ова е CS50.-CS50.TV] 4 00:00:07,780 --> 00:00:11,610 Во ред. Па, добредојде секого. Ова е CS50 2012 година. 5 00:00:11,780 --> 00:00:16,610 Моето име е Јован, и јас ќе се зборува денес за регуларни изрази. 6 00:00:16,610 --> 00:00:22,530 Регуларни изрази првенствено е алатка, но, исто така, понекогаш се користи 7 00:00:22,530 --> 00:00:28,650 во кодот активно да суштина одговараат на обрасци и жици. 8 00:00:28,650 --> 00:00:33,800 Па тука е веб-стрип од xkcd. 9 00:00:34,440 --> 00:00:42,370 Во овој стрип постои убиство мистерија каде убиец има 10 00:00:42,370 --> 00:00:47,860 проследено некој на одмор, а протагонистите треба да 11 00:00:47,860 --> 00:00:52,500 пребарувате низ 200 мегабајти на пораки потрага за адреса. 12 00:00:52,500 --> 00:00:56,090 И тие се за да се откажат кога некој кој знае регуларни изрази - 13 00:00:56,090 --> 00:01:00,550 веројатно суперхерој - swoops долу и да пишува некои код 14 00:01:00,550 --> 00:01:02,970 и решава убиство мистерија. 15 00:01:02,970 --> 00:01:07,370 Па веројатно тоа ќе биде нешто што ќе бидат овластени да го стори 16 00:01:07,370 --> 00:01:09,370 по овој семинар. 17 00:01:09,370 --> 00:01:12,250 Ние сме само ќе обезбеди концизен вовед во јазикот 18 00:01:12,250 --> 00:01:16,770 и да ви даде доволно средства да одат по повеќе ресурси за своја. 19 00:01:17,680 --> 00:01:21,700 >> Така регуларни изрази се погледне во основа како ова. 20 00:01:22,930 --> 00:01:25,550 Ова е регуларниот израз во Ruby. 21 00:01:25,550 --> 00:01:29,280 Тоа не е страшно различни низ јазици. 22 00:01:29,690 --> 00:01:37,630 Имаме само на засеци да започне и марка на регуларниот израз во Ruby. 23 00:01:37,630 --> 00:01:42,880 И ова е регуларен израз да се погледне за во е-мејл адреса шема. 24 00:01:42,880 --> 00:01:49,160 Така можеме да видиме на првиот бит изгледа за било алфанумерички карактер. 25 00:01:50,500 --> 00:01:54,880 Тоа е затоа што е-мејл адреси често мора да започне со азбучен карактер. 26 00:01:55,460 --> 00:01:59,330 А потоа некои посебни карактер следи од страна на @ симбол. 27 00:01:59,330 --> 00:02:03,260 А потоа истото за име на домен. 28 00:02:03,260 --> 00:02:10,030 А потоа, помеѓу 2 и 4 карактери да се погледне за. Com,. Нет, и така натаму. 29 00:02:10,850 --> 00:02:13,200 Па тоа е уште еден пример на регуларниот израз. 30 00:02:13,200 --> 00:02:17,270 Така регуларни изрази се протоколи за изнаоѓање модели во текстот. 31 00:02:17,270 --> 00:02:21,130 Тие го прават споредби, селекции, и замени. 32 00:02:21,690 --> 00:02:27,970 Па Трет пример е наоѓање на сите телефонски броеви завршуваат со 54 во директориумот. 33 00:02:27,970 --> 00:02:34,360 Па пред Дејвид симнува до CS50 директориум би можеле да бараме 34 00:02:34,360 --> 00:02:40,450 некој модел каде што имаме голема заграда потоа 3 броја потоа завршуваат заграда, 35 00:02:40,450 --> 00:02:44,070 3 повеќе броеви, цртичка, 2 броја, а потоа 54. 36 00:02:44,070 --> 00:02:48,310 И дека ќе биде во суштина тоа како ние се излезе со регуларен израз за пребарување за тоа. 37 00:02:49,150 --> 00:02:52,960 >> Па така постојат - ние сме го направиле некои работи во CS50 кои се малку како 38 00:02:52,960 --> 00:02:59,740 регуларни изрази, па - на пример - во dictionary.C датотека 39 00:02:59,740 --> 00:03:04,720 за проверка на правопис проблем сет може да се користат fscanf 40 00:03:04,720 --> 00:03:07,930 да се прочита во еден збор од речникот. 41 00:03:07,930 --> 00:03:16,240 И можете да го видите процентот 45S е во потрага по низа од 45 карактери. 42 00:03:16,240 --> 00:03:20,020 Па тоа е нешто како рудиментирана регуларниот израз. 43 00:03:21,150 --> 00:03:26,060 И можете да имате било какви 45 карактери кои се вклопуваат во законот во таму 44 00:03:26,060 --> 00:03:28,080 и да го изберат оние до. 45 00:03:28,080 --> 00:03:33,480 А потоа вториот пример во најновата веб програмирање проблем 46 00:03:33,480 --> 00:03:40,760 поставени во distro код за php ние всушност го имаат едноставни регуларниот израз. 47 00:03:40,760 --> 00:03:46,790 И овој е само едноставно бараат да се провери ако на веб-страница, која е донесен во 48 00:03:46,790 --> 00:03:51,940 одговара или пријавете се или одјава се регистрирате. PHP. 49 00:03:52,220 --> 00:03:57,910 А потоа се враќа точно или неточно врз основа на таа регуларниот израз појавување. 50 00:03:59,400 --> 00:04:01,740 >> Па кога го користите регуларниот израз? 51 00:04:01,740 --> 00:04:04,820 Зошто сте овде денес? 52 00:04:05,330 --> 00:04:08,480 Значи, вие не сакате да го користите на регуларниот израз кога има нешто што 53 00:04:08,480 --> 00:04:11,640 не на работа за вас, дури полесно. 54 00:04:11,640 --> 00:04:15,510 Па XML и HTML се всушност доста слабо 55 00:04:15,510 --> 00:04:18,480 да се напише регуларни изрази за како што ќе видиме во малку. 56 00:04:19,110 --> 00:04:23,280 Па така постојат посветен парсери за оние јазици. 57 00:04:24,170 --> 00:04:30,060 Исто така треба да биде во ред со трговија добиени и точност често. 58 00:04:30,060 --> 00:04:36,220 Ако се обидувате - па видовме регуларниот израз за е-мејл адреса, 59 00:04:37,370 --> 00:04:42,590 но велат дека си сакал одредена е-мејл адреса и постепено 60 00:04:42,590 --> 00:04:48,570 на регуларниот израз може да стане уште посложен како што стана попрецизна. 61 00:04:49,580 --> 00:04:52,260 Така што ќе биде една пласирам. 62 00:04:52,260 --> 00:04:55,330 Мора да бидете сигурни дека се е во ред со правење на регуларниот израз. 63 00:04:55,330 --> 00:04:57,920 Ако знаеш точно она што го барате за тоа може да го направи повеќе смисла 64 00:04:57,920 --> 00:05:02,070 да се стави во време и да напише повеќе ефективни парсерот. 65 00:05:02,070 --> 00:05:06,980 И конечно, тука е историски проблем со регуларноста 66 00:05:06,980 --> 00:05:08,940 на изрази и јазици. 67 00:05:08,940 --> 00:05:12,960 Регуларни изрази се всушност многу помоќен од 68 00:05:12,960 --> 00:05:16,450 регуларни изрази за да се каже во формална смисла. 69 00:05:17,130 --> 00:05:20,150 >> Па јас не сакаат да одат премногу далеку во формалниот теорија, 70 00:05:20,150 --> 00:05:24,000 но повеќето јазици кои ние код во всушност не се редовни. 71 00:05:24,000 --> 00:05:29,110 И ова е причината зошто регуларни изрази понекогаш не се сметаат сите дека сигурно. 72 00:05:29,670 --> 00:05:33,150 Значи, во основа постои хиерархија Чомски за јазици, 73 00:05:33,150 --> 00:05:38,400 и регуларни изрази се изгради со помош унија, конкатенација, 74 00:05:38,400 --> 00:05:41,810 и ѕвездата Kleene операција која што ќе видиме во неколку минути. 75 00:05:43,130 --> 00:05:48,860 Ако сте заинтересирани во теорија има доста случува таму под хауба. 76 00:05:50,360 --> 00:05:55,880 >> Толку кратка историја - само за контекстот тука - редовно поставува дојде 77 00:05:55,880 --> 00:05:59,580 во 1950 година, а потоа моравме едноставна уредници кои 78 00:05:59,580 --> 00:06:03,300 инкорпорирани регуларни изрази - само потрага по жиците. 79 00:06:03,570 --> 00:06:09,110 Grep - кој е алатка со командна линија - беше еден од првите 80 00:06:09,110 --> 00:06:14,160 многу популарна алатки кои ставена регуларни изрази во 1960-тите. 81 00:06:14,160 --> 00:06:20,560 Во 80-те, perl бил изграден - е програмски јазик кој 82 00:06:20,560 --> 00:06:24,110 вклучува регуларни изрази многу видливо. 83 00:06:24,550 --> 00:06:30,130 А потоа од неодамна имавме Perl компатибилна регуларни изрази 84 00:06:30,130 --> 00:06:35,870 протоколи основа на други јазици кои ги користат многу од истата синтакса. 85 00:06:36,630 --> 00:06:39,840 Се разбира најважниот настан беше во 2008 година 86 00:06:39,840 --> 00:06:43,040 каде што имаше првиот Национален регуларни изрази за ден, 87 00:06:43,040 --> 00:06:47,350 што верувам дека е 1 јуни, ако сакате да го слават тој. 88 00:06:48,430 --> 00:06:50,840 >> Повторно, само малку повеќе теоријата тука. 89 00:06:52,180 --> 00:06:55,320 Па така постојат неколку различни начини на градење на регуларни изрази. 90 00:06:55,950 --> 00:07:02,050 Еден едноставен начин е да се изгради израз кој ви се случува да 91 00:07:02,050 --> 00:07:07,500 работат на стрингот протолкува - во основа се изгради малку мини-програма која 92 00:07:07,500 --> 00:07:11,870 ќе ги анализира парчиња низа и да видиме, "Ох, дали тоа одговара на регуларен израз или не?" 93 00:07:12,250 --> 00:07:14,250 И потоа изврши тоа. 94 00:07:14,250 --> 00:07:17,300 Значи, ако имате многу мал регуларен израз, ова е веројатно 95 00:07:17,300 --> 00:07:19,380 на најефикасен начин да го направи тоа. 96 00:07:20,090 --> 00:07:25,420 А потоа, ако вас - уште една опција е да се задржи реконструкција на 97 00:07:25,420 --> 00:07:30,260 израз како да одиш, а тоа е можноста симулираат. 98 00:07:30,440 --> 00:07:37,690 И овие рани обиди на регуларниот израз алгоритми се 99 00:07:37,690 --> 00:07:44,330 релативно едноставен и релативно брза, но не треба многу флексибилност. 100 00:07:44,330 --> 00:07:47,500 Па да се направи дури и некои од работите кои ние ќе се обидеме да се погледне во 101 00:07:47,500 --> 00:07:52,860 денес ние требаше да се направат повеќе сложени регуларниот израз 102 00:07:52,860 --> 00:07:56,650 имплементации кои се потенцијално многу побавен, па тоа е нешто да се има предвид 103 00:07:57,510 --> 00:08:02,920 Исто така има и регуларни изрази негирање на нападот различни 104 00:08:02,920 --> 00:08:08,330 кои ги искористат потенцијалот за овие поновите имплементации на 105 00:08:08,330 --> 00:08:10,930 регуларни изрази за да стане многу сложен. 106 00:08:11,570 --> 00:08:15,650 И во ист смисла што сме го виделе во buffer overflow напади, 107 00:08:15,650 --> 00:08:21,610 имате напади кои работат со тоа што рекурзивен јамки кои 108 00:08:21,610 --> 00:08:24,400 лизгањето на капацитетот на меморијата. 109 00:08:24,780 --> 00:08:29,540 И патем Regexen е еден од официјалните множествени на регуларниот израз 110 00:08:29,540 --> 00:08:32,890 по аналогија на воловите во англо-саксонските. 111 00:08:33,500 --> 00:08:40,169 >> Океј, па библиотека Пајтон многумина од вас овде во лице имаат Macs, 112 00:08:40,169 --> 00:08:43,860 така што всушност може да се повлече оваа појавува на вашиот екран. 113 00:08:43,860 --> 00:08:47,480 Регуларни изрази се вградени во Python. 114 00:08:48,070 --> 00:08:53,020 И така Пајтон е во пакет на Macs и, исто така, се достапни онлајн на овој линк. 115 00:08:53,770 --> 00:08:57,350 Значи, ако се гледа можете да го паузирате и бидете сигурни дека имате Пајтон 116 00:08:58,080 --> 00:09:00,170 како што се позанимавам тука. 117 00:09:00,780 --> 00:09:06,420 Постои рачен интернет, па ако само тип Пајтон во вашиот компјутер 118 00:09:06,420 --> 00:09:10,500 ќе видите дека верзијата доаѓа во терминал. 119 00:09:11,070 --> 00:09:17,720 Па јас обезбедени линк до прирачник за Верзија 2 на Python како и измамник лист. 120 00:09:17,720 --> 00:09:23,100 Постои Верзијата број 3 на Python, но вашиот Mac не мора да 121 00:09:23,100 --> 00:09:25,130 доаѓаат со тоа во пакет. 122 00:09:25,130 --> 00:09:27,360 Па не е страшно поинаква. 123 00:09:27,360 --> 00:09:33,270 Океј, па некои основите на користење на регуларни изрази во Python. 124 00:09:34,080 --> 00:09:42,650 >> Па еве јас се користи многу едноставен израз, па јас не Пајтон увоз повторно 125 00:09:43,750 --> 00:09:47,070 и потоа зеде резултат на re.search. 126 00:09:47,070 --> 00:09:49,910 И потрагата зема 2 аргументи. 127 00:09:49,910 --> 00:09:56,040 Првиот е регуларен израз, а вториот е текстот 128 00:09:56,040 --> 00:09:58,290 или низа сакате да се анализира. 129 00:09:58,290 --> 00:10:01,210 А потоа јас отпечатени на result.group. 130 00:10:01,580 --> 00:10:05,860 Значи овие се 2 основни функции ние ќе се обидеме да го видат денес 131 00:10:06,790 --> 00:10:10,170 за учење за регуларни изрази. 132 00:10:10,170 --> 00:10:12,880 Па само рушење на оваа регуларниот израз овде 133 00:10:12,880 --> 00:10:21,770 ж а потоа \ W и тогаш сум толку \ w само прифаќа било азбучен лик во таму. 134 00:10:21,850 --> 00:10:26,820 Па еве ние сме во потрага за една "ж", а потоа друг азбучен карактер 135 00:10:26,820 --> 00:10:30,060 а потоа метри, па еве што ќе одговараат на шунка 136 00:10:30,060 --> 00:10:34,480 во ", Абрахам Линколн и шунка сендвичи." 137 00:10:35,040 --> 00:10:37,150 Ова е резултат на таа група. 138 00:10:37,680 --> 00:10:43,130 Друга работа што можеме да направиме е ги користат нашите пред низи на текст во Python. 139 00:10:43,130 --> 00:10:46,220 Па претпоставувам дека ќе оди напред и да се повлече дека тука горе. 140 00:10:46,220 --> 00:10:49,210 Пајтон увоз повторно. 141 00:10:50,070 --> 00:10:54,000 И ако јас требаше да го прават истото - да речеме текст е, 142 00:10:55,390 --> 00:11:00,800 "Авраам", нека зумирате - таму ќе одиме. 143 00:11:01,610 --> 00:11:06,430 Текстот е "Авраам јаде шунка." 144 00:11:07,460 --> 00:11:15,260 Во ред, а потоа резултира = re.search. 145 00:11:16,260 --> 00:11:22,020 А потоа нашите израз може да биде h, а потоа јас ќе направам точка м. 146 00:11:22,020 --> 00:11:26,280 Па дот само ги зема било карактер што не е нова линија вклучувајќи броеви, 147 00:11:26,280 --> 00:11:28,650 процент знаци, такво нешто. 148 00:11:28,650 --> 00:11:38,030 А потоа текст - бум - и потоа result.group--Да. 149 00:11:38,030 --> 00:11:41,820 Па тоа е само како да се имплементира основната функционалност тука. 150 00:11:42,300 --> 00:11:55,110 Ако имавме текст прстен што - тоа лудо текст - вклучени се каже многу назад засеци 151 00:11:55,110 --> 00:12:01,180 и жици внатре и работи кои би можеле да изгледаат избега секвенци, 152 00:12:01,180 --> 00:12:08,480 тогаш ние веројатно сакаат да го користат суровини внесување на текст за да бидете сигурни дека е прифатена. 153 00:12:08,480 --> 00:12:14,120 И тоа само изгледа така. 154 00:12:14,120 --> 00:12:17,810 Значи, ако бевме во потрага за секој од нив таму ние не треба да најдам ништо. 155 00:12:19,070 --> 00:12:21,680 Но тоа е како ќе се имплементира, само пред низа од 156 00:12:21,680 --> 00:12:24,990 на регуларниот израз ќе се стави на буквата Р. 157 00:12:26,150 --> 00:12:30,260 >> Океј, па нека продолжувам да одам. 158 00:12:30,260 --> 00:12:33,730 Сите права - па нека се погледне на неколку повторливи модели тука. 159 00:12:34,750 --> 00:12:39,150 Значи едно нешто што сакате да направите е да се повторува работите 160 00:12:40,040 --> 00:12:42,480 како што се бараат преку текст. 161 00:12:42,480 --> 00:12:48,300 Па да се направи проследено со кој било број на б - правиш AB *. 162 00:12:48,630 --> 00:12:51,620 А потоа таму се и низа други правила исто така. 163 00:12:51,620 --> 00:12:54,380 И може да се погледне на сите овие горе, јас само ќе поминува низ некои од 164 00:12:54,380 --> 00:12:57,630 најчесто се користат оние. 165 00:12:57,630 --> 00:13:03,920 Па AB + е проследено со било N поголема од 0 на b. 166 00:13:04,510 --> 00:13:08,000 зло? е проследено со 0 или 1 од б. 167 00:13:09,190 --> 00:13:18,580 AB {n} е проследено со N на б, а потоа и така натаму. 168 00:13:18,580 --> 00:13:22,820 Ако имате 2 броеви во големите загради се одредување на опсег 169 00:13:23,300 --> 00:13:25,440 кои можат да бидат евентуално исти. 170 00:13:26,390 --> 00:13:30,420 Па ние ќе го разгледаме повеќе на неколку повторливи обрасци во една минута. 171 00:13:31,960 --> 00:13:42,300 Па 2 работи да се има предвид при користење на овие модел за појавување алатки тука. 172 00:13:42,300 --> 00:13:52,120 Така велат сакаме да се погледне на hm на "Абрахам Линколн прави шунка сендвичи." 173 00:13:52,120 --> 00:13:55,230 Па јас го промени името Абрахам Линколн на Авраам. 174 00:13:55,230 --> 00:14:00,290 И сега сме во потрага за она што се вратија од ова пребарување функција, 175 00:14:00,290 --> 00:14:03,270 и тоа само се враќа шунка во овој случај. 176 00:14:03,620 --> 00:14:08,080 И тоа го прави тоа, бидејќи за пребарување едноставно природно се зема левата повеќето задача. 177 00:14:08,080 --> 00:14:12,130 И сите регуларни изрази, освен ако не се определи поинаку ќе го правам тоа. 178 00:14:12,830 --> 00:14:18,880 Ако сакавме да ги најдете сите постои функција за тоа - ги најдете сите. 179 00:14:18,880 --> 00:14:35,100 Така што може само да погледнете како и сите = re.findall ('h.m ", текст) 180 00:14:35,100 --> 00:14:44,540 а потоа all.group (). 181 00:14:44,540 --> 00:14:51,040 Сите произведува двете шунка и сланина, во овој случај и двете на жиците во Авраам секоја шунка. 182 00:14:51,610 --> 00:14:55,110 Па тоа е уште една опција. 183 00:14:56,250 --> 00:15:06,940 >> Одлично. Од друга работа да се има предвид е дека регуларни изрази се најголемите интуитивно. 184 00:15:06,940 --> 00:15:09,520 Дозволете ни да се погледне на овој пример. 185 00:15:10,200 --> 00:15:16,070 Ние го сторивме дека левата повеќето интернет тука, а потоа јас се обидел поголем пребарување 186 00:15:16,070 --> 00:15:18,800 користење на Kleene ѕвезда оператор. 187 00:15:18,800 --> 00:15:24,180 Значи за "Абрахам Линколн прави шунка сендвичи," а јас само се вративте 188 00:15:24,180 --> 00:15:26,280 м, како резултат. 189 00:15:26,280 --> 00:15:31,670 Причината за таа грешка беше тоа што јас би можел да земе било кој број на 190 00:15:31,670 --> 00:15:36,140 ж е затоа што јас не прецизираше ништо да патувам во меѓу ч и м. 191 00:15:36,140 --> 00:15:42,010 Само пример таму што имаше м - единствениот примери има со m во неа 192 00:15:42,010 --> 00:15:46,220 и било кој број на час беа само низа м. 193 00:15:46,490 --> 00:15:51,850 Тогаш јас се обидов повторно, реков, "Океј, ајде да го добиете вистинскиот најголемата група тука." 194 00:15:51,850 --> 00:15:59,670 И потоа направив часот. * М, така што само се враќа било кој број на карактери помеѓу ч и м. 195 00:16:00,280 --> 00:16:02,950 И ако сте само почетна надвор и размислување, "О, добро, добро ова ќе 196 00:16:02,950 --> 00:16:11,560 ме сфаќајте шунка ", што всушност е потребно сè, од час во Абрахам Линколн 197 00:16:11,560 --> 00:16:13,690 сите на патот до крајот на шунка. 198 00:16:14,040 --> 00:16:18,110 Тоа е алчен, тоа го гледа ж - сето тоа друг текст - м, 199 00:16:18,110 --> 00:16:21,280 и тоа е она што е потребно внатре 200 00:16:22,060 --> 00:16:27,480 Ова е особено острата - ова е карактеристика ние исто така може 201 00:16:27,480 --> 00:16:30,670 се определи за не би било алчен со употреба на други функции. 202 00:16:31,480 --> 00:16:34,490 Но, ова е нешто што треба да имајте на ум, особено 203 00:16:34,490 --> 00:16:38,720 кога гледа во HTML текстот, што е една од причините што 204 00:16:38,720 --> 00:16:41,500 регуларни изрази се тешки за HTML. 205 00:16:42,460 --> 00:16:46,310 Затоа што ако имате HTML отворен таг и тогаш многу нешта во средината 206 00:16:46,310 --> 00:16:49,820 а потоа некои други HTML затворени таг многу подоцна во програмата, 207 00:16:49,820 --> 00:16:55,420 имате само јаде многу од вашето HTML кодот најверојатно по грешка. 208 00:16:56,200 --> 00:17:01,840 >> Сите право - така повеќе специјални карактери, како и многу други јазици, 209 00:17:01,840 --> 00:17:04,780 ние да избега со помош на коса црта. 210 00:17:04,780 --> 00:17:10,329 Значи можеме да го користиме точка да специфицирате било карактер, освен за нова линија. 211 00:17:10,329 --> 00:17:14,550 Можеме да го користиме бегство w да специфицирате било азбучен карактер. 212 00:17:14,550 --> 00:17:20,329 И по аналогија бегство г за секој цел број - нумеричка карактер. 213 00:17:20,630 --> 00:17:27,440 Може да се определи - можеме да го користиме загради да одредите поврзани со изрази. 214 00:17:27,440 --> 00:17:30,970 Така што ова ќе го прифати, Б, или Ц. 215 00:17:31,320 --> 00:17:37,000 И ние исто така може да се определи или опции за или или b. 216 00:17:37,000 --> 00:17:41,110 На пример - ако бевме во потрага по повеќе можности 217 00:17:41,110 --> 00:17:44,940 во загради можеме да го користите или операторот, како и во - 218 00:17:44,940 --> 00:17:52,480 па нека се врати во овој пример тука. 219 00:17:53,000 --> 00:17:59,790 И сега нека се - да се вратиме на овој пример тука, а потоа 220 00:17:59,790 --> 00:18:12,290 земе Ae - па ова треба да се врати - Претпоставувам ова е уште Авраам. 221 00:18:12,290 --> 00:18:17,410 Значи ова - ако тоа го правиме сите - одлично. 222 00:18:17,410 --> 00:18:22,700 Па нека се ажурира текстот овде. 223 00:18:22,700 --> 00:18:34,690 "Авраам јаде шунка додека Hemming неговата -. Додека hemming" Одлично. 224 00:18:44,090 --> 00:18:47,330 Сите. Одлично. Сега ќе го добиеме шунка, шунка, и полите. 225 00:18:48,510 --> 00:18:59,370 Додека hemming - додека потпевнува со него - додека потпевнува да полите него. Одлично. 226 00:19:00,350 --> 00:19:03,250 Истото. 227 00:19:03,820 --> 00:19:09,180 Сега сите се враќа уште само шунка, шунка, и полите без подигање на потпевнувам или него. 228 00:19:09,940 --> 00:19:22,600 Велики - па што ако сакаме да се погледне во било што - така и ние не можеше да стори 229 00:19:23,510 --> 00:19:33,810 него или - ние ќе се вратам на тоа. 230 00:19:34,810 --> 00:19:45,760 Океј - така - сите во право - во позиции можете да го користите на коректорски знак или знакот за долар 231 00:19:45,760 --> 00:19:49,350 да се каже дека сте во потрага за нешто на почетокот или на крајот на стринг. 232 00:19:50,260 --> 00:19:52,260 Или на почетокот или на крајот на зборот. 233 00:19:52,400 --> 00:19:54,470 Тоа е еден начин да се користи тоа. 234 00:19:55,630 --> 00:20:01,160 >> Ред - па нека се позанимавам со малку поголем блок од текст. 235 00:20:03,950 --> 00:20:08,310 Да речеме овој ред тука - оваа изјава тука. 236 00:20:08,310 --> 00:20:11,360 Моќта на регуларен израз е дека тие може да се определи модели 237 00:20:11,360 --> 00:20:13,390 не само фиксен карактери. 238 00:20:14,900 --> 00:20:18,790 Дозволете ни да го направи - да ни се јавите овој блок. 239 00:20:22,400 --> 00:20:27,110 Тогаш ние ќе го читаат сето тоа внатре 240 00:20:28,890 --> 00:20:50,820 А потоа да има - нека направи сите =, па она што се некои работи би можеле да бараме тука профитабилно? 241 00:20:50,820 --> 00:20:54,070 Ние би можеле да се погледне за изразување уво. 242 00:20:55,050 --> 00:21:01,520 Не е многу интересно. Како за тоа? Ќе видиме што се случува. 243 00:21:03,710 --> 00:21:05,710 Го дадов проблем. 244 00:21:06,380 --> 00:21:10,750 Значи било кој број на нештата пред повторно и сите. 245 00:21:10,750 --> 00:21:15,630 Така што треба да се вратат сè, од почетокот до сите ре можеби неколку пати. 246 00:21:18,800 --> 00:21:21,970 А потоа тука имаме моќ на регуларни изрази е дека тие 247 00:21:21,970 --> 00:21:24,900 може да се определи моделите не само ликови тука се. 248 00:21:24,900 --> 00:21:28,510 Така што сите на патот до финалето повторно, таа започна со левата најмногу и беше алчен. 249 00:21:30,710 --> 00:21:32,710 Ајде да видиме - што друго би можеле да се погледне за. 250 00:21:32,710 --> 00:21:39,860 Претпоставувам дека една работа, ако сте биле заинтересирани во потрага за заменки таа и тој, 251 00:21:39,860 --> 00:21:44,600 може да се провери за е еднаква на 0 или 1 252 00:21:44,600 --> 00:21:49,710 и изразувањето тој, и дека е веројатно нема да се вратат - 253 00:21:49,710 --> 00:21:58,020 ох, претпоставувам дека тој се вратил затоа што ние сме во потрага на власт, тој ден, тука се. 254 00:22:00,590 --> 00:22:06,270 Нека се обидат наведувајќи дека ова мора да дојде во почетокот на нешто. 255 00:22:06,640 --> 00:22:09,530 Ајде да видиме ако тоа опаѓа. 256 00:22:09,530 --> 00:22:19,630 Така што можеме да направиме масти, и таму ние не добиваме ништо, бидејќи таа и тој 257 00:22:19,630 --> 00:22:22,870 не се појавуваат во оваа фраза. 258 00:22:24,960 --> 00:22:30,410 Одлично. Ред - па назад на мачката тука. 259 00:22:30,410 --> 00:22:35,720 Толку сложени модели е повреда на мозокот. 260 00:22:35,720 --> 00:22:40,500 Па тоа е причината зошто ние се користи регуларни изрази за да се избегнат овие проблеми. 261 00:22:40,820 --> 00:22:43,520 >> Значи тука се и некои други корисни начини можете да се позанимавам со. 262 00:22:43,520 --> 00:22:50,290 Ние погледна пребарување денес, но исто така можете да го користите натпревар, Сплит, findall, и групи. 263 00:22:50,290 --> 00:22:53,970 Па други кул работи што можете да направите со регуларни изрази освен само 264 00:22:53,970 --> 00:22:58,870 во потрага по модели изведува шема и одржување на сите натпревари - 265 00:22:58,870 --> 00:23:02,530 нејзините променливи - и потоа со употреба на оние во вашиот код подоцна. 266 00:23:02,850 --> 00:23:05,980 Кои можат да бидат доста корисни. Други работи може да се смета. 267 00:23:05,980 --> 00:23:11,720 Значи ние можеме да сметаме на бројот на случаи на регуларниот израз шема, 268 00:23:11,720 --> 00:23:13,960 и тоа е она што можеме да го користиме групи за. 269 00:23:13,960 --> 00:23:17,550 И други начини, како и се, исто така, е можно. 270 00:23:18,040 --> 00:23:22,980 Па јас само сакам да зборувам малку повеќе за други начини можете да го користите регуларни изрази. 271 00:23:22,980 --> 00:23:29,100 >> Значи уште една напредна апликација е во фази појавување. 272 00:23:29,100 --> 00:23:33,450 Значи, ако сте во потрага за еден текст заради изразување, Јулиј Цезар, 273 00:23:33,450 --> 00:23:37,740 и ќе видите или Гај Јулиј Цезар или името Јулиј Цезар во други јазици, 274 00:23:37,740 --> 00:23:44,400 тогаш можеби ќе сакате да го доделите некоја тежина на тие вредности. 275 00:23:44,400 --> 00:23:48,930 И ако тоа е доволно блиску - ако тој преминува одреден праг - тогаш сакате 276 00:23:48,930 --> 00:23:50,860 да бидат во можност да ја прифати Јулиј Цезар. 277 00:23:50,860 --> 00:24:00,580 Па така постојат неколку различни имплементации за тоа во неколку други јазици, како и. 278 00:24:02,580 --> 00:24:08,420 Тука се и некои други алатки, регуларниот израз Пал - корисна малку стан онлајн, за да 279 00:24:08,420 --> 00:24:12,190 проверете дали вашиот регуларни изрази се составени правилно. 280 00:24:12,190 --> 00:24:18,500 Исто така има и самостојни алатки кои можете да ја стартувате од вашиот десктоп 281 00:24:18,500 --> 00:24:22,100 како Ултра Пико, и како и само куварица. 282 00:24:22,100 --> 00:24:25,410 Значи, ако се прави проект кој вклучува еден тон на регуларни изрази 283 00:24:25,410 --> 00:24:29,810 ова е веројатно место да одат надвор од опсегот на денешницата. 284 00:24:31,520 --> 00:24:35,770 А потоа само да ви даде чувство за тоа како заеднички тоа е 285 00:24:35,770 --> 00:24:44,090 постои grep во Unix, perl има вграден во, и C постои PCRE за C. 286 00:24:44,090 --> 00:24:48,890 А потоа сите овие други јазици, исто така, имаат регуларен израз пакети 287 00:24:48,890 --> 00:24:52,020 кои работат со суштина иста синтакса ние се здобија со вкус на денешницата. 288 00:24:52,020 --> 00:24:54,790 PHP, Java, Ruby, и така натаму. 289 00:24:56,080 --> 00:24:58,980 >> Код на Google Search е всушност вреди да се спомене, тоа е еден од 290 00:24:58,980 --> 00:25:05,720 релативно мал број на апликации таму што му овозможува на јавноста за пристап 291 00:25:05,720 --> 00:25:07,800 својата база на податоци со користење на регуларни изрази. 292 00:25:07,800 --> 00:25:12,920 Па ако се погледне на Код на Google Барај можете да најдете кодот 293 00:25:12,920 --> 00:25:16,880 ако сте во потрага за пример за тоа како еден функција може да се користи, 294 00:25:16,880 --> 00:25:21,610 можете да го користите регуларен израз да се најде таа функција се користи во сите видови на различни случаи. 295 00:25:21,610 --> 00:25:28,000 Вие би можеле да се погледне за запишување, а потоа можете да барате знамето на пишуваат или читаат 296 00:25:28,000 --> 00:25:32,000 ако си сакал пример за запишување кои се користат во тој случај. 297 00:25:33,530 --> 00:25:37,010 Па истото таму, и тука се и некои референци. 298 00:25:37,010 --> 00:25:40,990 Ова ќе бидат достапни на интернет како и, па оди напред ако 299 00:25:40,990 --> 00:25:45,560 сакате да се погледне во Пајтон, grep, perl - вие само сакате да добиете некои инспирација 300 00:25:45,560 --> 00:25:50,650 или ако сакате да се погледне повеќе на теорија еве некои добри скокање исклучи места. 301 00:25:50,650 --> 00:25:53,870 Ви благодарам многу. 302 00:25:58,470 --> 00:25:59,910 [CS50.TV]