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 Меркавана супергероя - налятае і запісвае некаторы код 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 усталяваны ў дыстрыбутыве 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 і аперацыя зорка Клін, што мы ўбачым праз некалькі хвілін. 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 І шмат у чым гэтак жа сэнсе, што мы бачылі ў нападаў на перапаўненне буфера, 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 >> Добра, так што бібліятэка Python, многія з вас асабіста ёсць Mac, 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 І так Python прадусталяванай на кампутарах Mac, а таксама даступная ў Інтэрнэце па гэтай спасылцы. 115 00:08:53,770 --> 00:08:57,350 Так што калі вы глядзіце вы можаце прыпыніць і пераканайцеся, што ў вас ёсць Python 116 00:08:58,080 --> 00:09:00,170 як мы граем тут. 117 00:09:00,780 --> 00:09:06,420 Існуе кіраўніцтва онлайн, так што калі вы проста набярэце Python ў кампутар 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 >> Дык вось я выкарыстаў вельмі просты выраз, так што я зрабіў Python імпарт паўторна 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, а затым так м \ ж проста прымае любой літары ў алфавітным парадку там. 134 00:10:21,850 --> 00:10:26,820 Дык вось мы шукаем "H", а затым яшчэ літары ў алфавітным парадку 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 Python імпарт паўторна. 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 І тады наша выраз можа быць гадзіну, а то і Я зраблю кропка м. 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 рэгулярны выраз вы паклалі Літара R. 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 Так што ж рабіць варта любы лік B - вы робіце 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 б. 166 00:13:04,510 --> 00:13:08,000 AB? гэта варта 0 або 1 б. 167 00:13:09,190 --> 00:13:18,580 AB {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 Так што сказаць, што мы хочам паглядзець на ТМ "Абрагам Лінкальн робіць бутэрброды з вяндлінай". 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 дапамогай аператара Клін зоркі. 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 Адзіны прыклад, што там былі м - адзіныя прыклады там з м у ім 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 І па аналогіі ўцёкі D для любога цэлага - колькасны характар. 213 00:17:20,630 --> 00:17:27,440 Мы можам паказаць - мы можам выкарыстоўваць дужкі, каб паказаць звязаных выразаў. 214 00:17:27,440 --> 00:17:30,970 Так што гэта будзе прыняць A, B, або C. 215 00:17:31,320 --> 00:17:37,000 І мы можам таксама пазначыць або варыянты А ці Б. 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 "Абрагам есць вяндліну у той час як яго падшываць -. Складалі ў той час як" Вялікі. 224 00:18:44,090 --> 00:18:47,330 Ўсё. Вялікі. Цяпер мы атрымліваем Вяндліна, вяндліна, і падол. 225 00:18:48,510 --> 00:18:59,370 У той час як Хемминг - у той час напявала яму - у той час напяваў падол яго. Вялікі. 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 Так што павінны вярнуцца ўсе, ад пачатку да ўсіх Re магчыма пару разоў. 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 Вось некаторыя іншыя інструменты, Regex Pal - зручнае невялікае прыкладанне онлайн 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 мае ўбудаваны, і З ёсць 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 на самай справе варта згадаць, гэта адна з 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 Вы можаце зірнуць на FWRITE, а затым вы можаце паглядзець на сцяг чытання або запісы 296 00:25:28,000 --> 00:25:32,000 Калі вы хацелі прыклад FWRITE выкарыстоўваюцца ў гэтым выпадку. 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 Вы хочаце паглядзець на Python, 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]