1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminar: Daimi ifadələri ilə Eşleme Pattern] 2 00:00:02,000 --> 00:00:04,000 [John Mussman-Harvard Universiteti] 3 00:00:04,000 --> 00:00:07,220 [Bu CS50.-CS50.TV] 4 00:00:07,780 --> 00:00:11,610 OK. Bəli, hər kəs xoş gəlmisiniz. Bu CS50 2012. 5 00:00:11,780 --> 00:00:16,610 My name John və mən normal ifadeler haqqında bu gün söhbət olunacaq. 6 00:00:16,610 --> 00:00:22,530 Daimi ifadələr əsasən vasitədir, həm də bəzən istifadə 7 00:00:22,530 --> 00:00:28,650 kodu fəal əhəmiyyətli nümunələri və strings uyğun. 8 00:00:28,650 --> 00:00:33,800 Belə ki, burada xkcd bir web komik var. 9 00:00:34,440 --> 00:00:42,370 Bu komik ildə qatil olduğu bir qətli sirr var 10 00:00:42,370 --> 00:00:47,860 tatile kimsə təqib və başkahramanlarıdır var 11 00:00:47,860 --> 00:00:52,500 bir ünvan axtarır e-poçt 200 megabayt vasitəsilə axtarış. 12 00:00:52,500 --> 00:00:56,090 Onlar normal ifadeler bilən zaman kimsə imtina haqqında - 13 00:00:56,090 --> 00:01:00,550 ehtimalla bir superhero - swoops aşağı və bəzi kodu yazır 14 00:01:00,550 --> 00:01:02,970 və qətli sirr həll edir. 15 00:01:02,970 --> 00:01:07,370 Belə güman ki, siz bunu etmək səlahiyyətinə malik olacaq ki, bir şey olacaq 16 00:01:07,370 --> 00:01:09,370 Bu seminarda sonra. 17 00:01:09,370 --> 00:01:12,250 Biz yalnız dili qısa giriş təmin edir 18 00:01:12,250 --> 00:01:16,770 və sizin öz daha çox qaynaq sonra getmək üçün kifayət qədər para verir. 19 00:01:17,680 --> 00:01:21,700 >> Belə ki, normal ifadeler bu kimi əsasən baxmaq. 20 00:01:22,930 --> 00:01:25,550 Bu Ruby bir normal ifade edir. 21 00:01:25,550 --> 00:01:29,280 Bu dillər arasında olduqca fərqli deyil. 22 00:01:29,690 --> 00:01:37,630 Biz Ruby normal ifadə başlamaq və işarələmək üçün yalnız slashes var. 23 00:01:37,630 --> 00:01:42,880 Bu e-mail ünvanı model üçün baxmaq üçün müntəzəm ifadəsidir. 24 00:01:42,880 --> 00:01:49,160 Beləliklə, biz birinci bit hər hansı bir alfasayısal karakter axtarır baxın. 25 00:01:50,500 --> 00:01:54,880 E-poçt ünvanlarını tez-tez əlifba xarakteri ilə başlamaq lazımdır görədir. 26 00:01:55,460 --> 00:01:59,330 Və sonra hər hansı bir xüsusi xarakter @ simvolu izlədi. 27 00:01:59,330 --> 00:02:03,260 Və sonra domen adı üçün eyni şey. 28 00:02:03,260 --> 00:02:10,030 Və sonra 2 arasında və 4 simvol s net. Ki,. Com axtarmaq və. 29 00:02:10,850 --> 00:02:13,200 Belə ki, normal ifade digər bir nümunəsidir. 30 00:02:13,200 --> 00:02:17,270 Belə ki, normal ifadeler mətn inciləridir tapmaq üçün protokollar var. 31 00:02:17,270 --> 00:02:21,130 Onlar müqayisə, Marka, və dəyişdirmə edin. 32 00:02:21,690 --> 00:02:27,970 Bir kataloq 54 bitən bütün telefon nömrələrini tapmaq bir üçüncü misal var. 33 00:02:27,970 --> 00:02:34,360 Belə ki, CS50 kataloq yuxarı David rips əvvəl axtarmaq bilər 34 00:02:34,360 --> 00:02:40,450 biz parantez olduğu bir model sonra 3 ədəd, sonra mötərizə son 35 00:02:40,450 --> 00:02:44,070 3 nömrələri, tire, 2 ədəd, sonra 54. 36 00:02:44,070 --> 00:02:48,310 Və biz bu axtarmaq üçün müntəzəm ifadə ilə gəlmək necə əhəmiyyətli olardı. 37 00:02:49,150 --> 00:02:52,960 >> Belə ki, orada var - biz CS50 bəzi işlər var kimi bir az ki, 38 00:02:52,960 --> 00:02:59,740 belə normal ifadeler, - məsələn üçün - dictionary.C faylı 39 00:02:59,740 --> 00:03:04,720 yazım çek problem set üçün təşəkkür fscanf istifadə ola bilər 40 00:03:04,720 --> 00:03:07,930 Lüğətə bir sözlə oxumaq. 41 00:03:07,930 --> 00:03:16,240 Və siz faiz 45s 45 simvol bir simli axtarır bilərsiniz. 42 00:03:16,240 --> 00:03:20,020 Belə ki, elementar normal ifade kimi bir az deyil. 43 00:03:21,150 --> 00:03:26,060 Və orada qanun uyğun hər hansı bir 45 simvol ola bilər 44 00:03:26,060 --> 00:03:28,080 və bu qədər seçin. 45 00:03:28,080 --> 00:03:33,480 Ən son web proqramlaşdırma problem və sonra ikinci misal 46 00:03:33,480 --> 00:03:40,760 PHP üçün distro kodu müəyyən biz, həqiqətən, sadə bir normal ifade var. 47 00:03:40,760 --> 00:03:46,790 Və bu sadəcə internet səhifəsində qəbul edilir ki, əgər yoxlamaq üçün axtarır 48 00:03:46,790 --> 00:03:51,940 ya giriş oyunları və ya qeydiyyatdan logout. PHP. 49 00:03:52,220 --> 00:03:57,910 Və sonra müntəzəm ifadə uyğunluğu əsasında doğru və ya yalan dönür. 50 00:03:59,400 --> 00:04:01,740 >> Belə ki, zaman normal ifade istifadə edirsiniz? 51 00:04:01,740 --> 00:04:04,820 Niyə bu gün burada var? 52 00:04:05,330 --> 00:04:08,480 Ki, bir şey var zaman Belə ki, normal ifade istifadə etmək istəmirəm 53 00:04:08,480 --> 00:04:11,640 daha asan sizin üçün iş görür. 54 00:04:11,640 --> 00:04:15,510 Belə ki, XML və HTML həqiqətən olduqca çətin olur 55 00:04:15,510 --> 00:04:18,480 biz bir az görmək olacaq kimi normal ifadeler yazmaq. 56 00:04:19,110 --> 00:04:23,280 Belə ki, bu dil üçün xüsusi parsers var. 57 00:04:24,170 --> 00:04:30,060 Siz həmçinin tez-tez ticarət off və dəqiqliyi ilə tamam olması lazımdır. 58 00:04:30,060 --> 00:04:36,220 Əgər çalışırıq, əgər - belə ki, e-mail üçün müntəzəm ifadə gördüm 59 00:04:37,370 --> 00:04:42,590 lakin müəyyən bir e-mail istəyirdi və tədricən demək 60 00:04:42,590 --> 00:04:48,570 daha çox dəqiq oldu normal ifade daha kompleks ola bilər. 61 00:04:49,580 --> 00:04:52,260 Belə ki, bir ticarət off olacaq. 62 00:04:52,260 --> 00:04:55,330 Siz tamam normal ifadə edərək əmin olmalıdır. 63 00:04:55,330 --> 00:04:57,920 Əgər Sizin tam olaraq nə o, daha məntiqli ola bilər 64 00:04:57,920 --> 00:05:02,070 vaxt qoymaq və daha səmərəli parser yazmaq. 65 00:05:02,070 --> 00:05:06,980 Və nəhayət qanunauyğunluqları ilə tarixi mövzu var 66 00:05:06,980 --> 00:05:08,940 ifadələr və dil. 67 00:05:08,940 --> 00:05:12,960 Daimi ifadələrin həqiqətən çox daha güclü daha var 68 00:05:12,960 --> 00:05:16,450 hər normal ifadeler formal mənada deyirəm. 69 00:05:17,130 --> 00:05:20,150 >> Belə ki, rəsmi nəzəriyyə daxil çox uzaq getmək istəmirəm 70 00:05:20,150 --> 00:05:24,000 lakin ən languages ​​biz, həqiqətən, kod müntəzəm deyil. 71 00:05:24,000 --> 00:05:29,110 Normal ifadeler bəzən bütün təhlükəsiz hesab niyə Və bu. 72 00:05:29,670 --> 00:05:33,150 Belə ki, əsasən diller üçün Chomsky iyerarxiya var 73 00:05:33,150 --> 00:05:38,400 və normal ifadeler birliyi, concatenation istifadə qurmaq olunur 74 00:05:38,400 --> 00:05:41,810 və biz bir neçə dəqiqə Kleene ulduz əməliyyat görəcəyik. 75 00:05:43,130 --> 00:05:48,860 Əgər istəyirsinizsə nəzəri başlıq altında gedən olduqca çoxdur. 76 00:05:50,360 --> 00:05:55,880 >> Qısa tarixi Belə ki, - burada yalnız kontekstində üçün - daimi dəst gəldi 77 00:05:55,880 --> 00:05:59,580 1950-ci ildə, sonra biz bu sadə redaktorları idi 78 00:05:59,580 --> 00:06:03,300 normal ifadeler daxil - yalnız strings üçün axtarış. 79 00:06:03,570 --> 00:06:09,110 Grep - bir command line vasitədir - ilk biri idi 80 00:06:09,110 --> 00:06:14,160 1960-cı illərdə normal ifadeler daxil çox populyar alətlər. 81 00:06:14,160 --> 00:06:20,560 80-ci illər, Perl tikildi - bir proqramlaşdırma dilidir ki, 82 00:06:20,560 --> 00:06:24,110 çox yer normal ifadeler daxildir. 83 00:06:24,550 --> 00:06:30,130 Və sonra bu yaxınlarda biz Perl uyğun normal ifade var 84 00:06:30,130 --> 00:06:35,870 əsasən eyni sintaksis çox istifadə edən digər dillərdə protokolları. 85 00:06:36,630 --> 00:06:39,840 Əlbəttə, ən mühüm hadisə 2008-ci ildə 86 00:06:39,840 --> 00:06:43,040 olduğu ilk Milli normal ifadeler günü var idi 87 00:06:43,040 --> 00:06:47,350 ki, qeyd etmək istəyirəm əgər mən 1 iyun inanıram. 88 00:06:48,430 --> 00:06:50,840 >> Burada Yenə, yalnız bir az daha nəzəriyyəsi. 89 00:06:52,180 --> 00:06:55,320 Belə ki, normal ifadeler tikintisi bir neçə müxtəlif yolları var. 90 00:06:55,950 --> 00:07:02,050 Bir sadə yol gedir ifadə qurulmasıdır 91 00:07:02,050 --> 00:07:07,500 şərh string run - əsasən ki, mini-proqram bir az qurmaq 92 00:07:07,500 --> 00:07:11,870 simli ədəd təhlil və görəcəksiniz, "Oh, bu normal ifade uyğun və ya deyil?" 93 00:07:12,250 --> 00:07:14,250 Və sonra axır. 94 00:07:14,250 --> 00:07:17,300 Bir çox kiçik normal ifade varsa, bu yəqin ki, 95 00:07:17,300 --> 00:07:19,380 bunu ən səmərəli yolu. 96 00:07:20,090 --> 00:07:25,420 Və sonra əgər - Başqa bir seçim yenidən davam edir 97 00:07:25,420 --> 00:07:30,260 ifadə getmək olduğunu və simülasyonu imkan kimi. 98 00:07:30,440 --> 00:07:37,690 Və normal ifade alqoritmlər bu erkən cəhdlər idi 99 00:07:37,690 --> 00:07:44,330 nisbətən sadə və nisbətən sürətli, lakin rahatlıq çox yox idi. 100 00:07:44,330 --> 00:07:47,500 Belə ki, bəzi şeyləri biz baxmaq edir ki, hətta bunu 101 00:07:47,500 --> 00:07:52,860 Bu gün biz daha mürəkkəb müntəzəm ifadə etmək idi 102 00:07:52,860 --> 00:07:56,650 potensial çox yavaş ki, həyata, ağılda tutmaq üçün bir şey ki, 103 00:07:57,510 --> 00:08:02,920 Hücum müxtəlif bir normal ifadeler inkar da var 104 00:08:02,920 --> 00:08:08,330 bu yeni tətbiq üçün potensial istismar edən 105 00:08:08,330 --> 00:08:10,930 çox mürəkkəb olmaq üçün normal ifadeler. 106 00:08:11,570 --> 00:08:15,650 Və biz Buffer Overflow hücum gördüm ki, çox eyni mənada, 107 00:08:15,650 --> 00:08:21,610 ki, işlər recursive loops edərək hücumlar var 108 00:08:21,610 --> 00:08:24,400 yaddaş tutumu dağıtmaq. 109 00:08:24,780 --> 00:08:29,540 Və yolu ilə Regexen normal ifade rəsmi çoğullarının biridir 110 00:08:29,540 --> 00:08:32,890 Anglo-Sakson ilə öküz analoji olaraq. 111 00:08:33,500 --> 00:08:40,169 >> OK, belə ki, Python Kitabxanası şəxs burada bir çox Macs var, 112 00:08:40,169 --> 00:08:43,860 belə ki, həqiqətən, sizin ekranda bu qədər çəkmək olar. 113 00:08:43,860 --> 00:08:47,480 Normal ifadeler Python daxil inşa edilir. 114 00:08:48,070 --> 00:08:53,020 Və belə Python bu keçid Macs və həmçinin mövcud online önyüklenmesi olunur. 115 00:08:53,770 --> 00:08:57,350 Siz müşahidə olunur Belə ki, əgər fasilə və Python əmin edə bilərsiniz 116 00:08:58,080 --> 00:09:00,170 biz burada ətrafında oynayır. 117 00:09:00,780 --> 00:09:06,420 Yalnız kompüter Python yazın əgər bir dərslik online var 118 00:09:06,420 --> 00:09:10,500 Siz versiyası terminal qədər gəlir ki, görəcəksiniz. 119 00:09:11,070 --> 00:09:17,720 Beləliklə, mən Python Version 2 eləcə də fırıldaqçı hesabatı üçün dərslik bir keçid təmin edir. 120 00:09:17,720 --> 00:09:23,100 Var Python bir Version 3, ancaq Mac Mütləq deyil 121 00:09:23,100 --> 00:09:25,130 önyüklenmesi ilə gəlir. 122 00:09:25,130 --> 00:09:27,360 Belə ki, olduqca fərqli deyil. 123 00:09:27,360 --> 00:09:33,270 OK, belə ki, Python müntəzəm ifadələr istifadə bəzi əsasları. 124 00:09:34,080 --> 00:09:42,650 >> Belə ki, burada bir çox sadə ifadəsi istifadə, belə ki, Python idxal yenidən etdi 125 00:09:43,750 --> 00:09:47,070 və sonra re.search nəticəsində aldı. 126 00:09:47,070 --> 00:09:49,910 Və axtarış 2 dəlilləri edir. 127 00:09:49,910 --> 00:09:56,040 İlk normal ifade və ikinci mətn 128 00:09:56,040 --> 00:09:58,290 və ya analiz etmək istəyirəm string. 129 00:09:58,290 --> 00:10:01,210 Və sonra mən result.group çap. 130 00:10:01,580 --> 00:10:05,860 Belə ki, bu gün biz görmək üçün gedir 2 əsas funksiyaları 131 00:10:06,790 --> 00:10:10,170 normal ifadeler haqqında öyrənmək. 132 00:10:10,170 --> 00:10:12,880 Belə ki, yalnız bu normal ifade burada parçalayaraq 133 00:10:12,880 --> 00:10:21,770 h və sonra \ w və sonra m belə \ w orada heç bir əlifba xarakter qəbul edir. 134 00:10:21,850 --> 00:10:26,820 Belə ki, burada başqa bir əlifba xarakter bir "H" axtarır və sonra 135 00:10:26,820 --> 00:10:30,060 və sonra m, belə ki, burada vetçina uyğun olardı ki, 136 00:10:30,060 --> 00:10:34,480 in, "Abraham Lincoln və vetçina sandviçler." 137 00:10:35,040 --> 00:10:37,150 Bu qrup nəticəsidir. 138 00:10:37,680 --> 00:10:43,130 Biz nə edə bilər ki, başqa bir şey Python mətn bizim əvvəl strings istifadə edir. 139 00:10:43,130 --> 00:10:46,220 Mən irəli getmək və burada qoparmaq edəcək danışarlar. 140 00:10:46,220 --> 00:10:49,210 Python idxal yenidən. 141 00:10:50,070 --> 00:10:54,000 Və mən eyni şey idi əgər -, bizə mətn deyək 142 00:10:55,390 --> 00:11:00,800 "İbrahim," Bizə Yakınlaştırmak edək - oraya gedin. 143 00:11:01,610 --> 00:11:06,430 Mətn "İbrahim vetçina yeyir." Dir 144 00:11:07,460 --> 00:11:15,260 Okay, sonra = re.search nəticəsində. 145 00:11:16,260 --> 00:11:22,020 Və sonra ifadə h ola bilər, və sonra dot m edəcəyik. 146 00:11:22,020 --> 00:11:26,280 Belə dot yalnız nömrələri daxil olmaqla, yeni xətt deyil ki, hər hansı bir xarakter alır 147 00:11:26,280 --> 00:11:28,650 faizlə əlamətləri, belə bir şey. 148 00:11:28,650 --> 00:11:38,030 Və sonra mətn - bumu - və sonra result.group-evet. 149 00:11:38,030 --> 00:11:41,820 Belə ki, burada əsas funksionallığı həyata keçirilməsi üçün yalnız necə. 150 00:11:42,300 --> 00:11:55,110 Ki, crazy mətn - - biz bir metin üzük olsaydı geri slashes çox demək daxil 151 00:11:55,110 --> 00:12:01,180 və daxili strings və escape ardıcıllığı kimi baxmaq bilər ki, hər şeyi, 152 00:12:01,180 --> 00:12:08,480 sonra biz yəqin ki, qəbul əmin etmək üçün xammal mətn daxil istifadə etmək istəyirik. 153 00:12:08,480 --> 00:12:14,120 Və yalnız kimi görünür ki,. 154 00:12:14,120 --> 00:12:17,810 Biz orada onların hər biri üçün axtarır Belə ki, əgər biz bir şey tapa bilməz. 155 00:12:19,070 --> 00:12:21,680 Amma ki, bunu həyata necə edir; yalnız əvvəl simli 156 00:12:21,680 --> 00:12:24,990 normal ifade siz məktubu r qoydu. 157 00:12:26,150 --> 00:12:30,260 >> OK, bizə davam edək. 158 00:12:30,260 --> 00:12:33,730 Sağ All - bizə burada bir neçə təkrar nümunələri baxaq. 159 00:12:34,750 --> 00:12:39,150 Beləliklə, siz nə etmək istəyirəm ki, bir şey şeyi təkrar edir 160 00:12:40,040 --> 00:12:42,480 Mətn vasitəsilə axtarış edilir. 161 00:12:42,480 --> 00:12:48,300 Belə ki, b hər hansı bir sıra ilə təqib etmək - siz ab * yoxdur. 162 00:12:48,630 --> 00:12:51,620 Və sonra digər qaydalarının bir sıra var. 163 00:12:51,620 --> 00:12:54,380 Və bu qədər bütün baxa bilərsiniz, mən yalnız bəzi axır olacaq 164 00:12:54,380 --> 00:12:57,630 ən çox olanları istifadə olunur. 165 00:12:57,630 --> 00:13:03,920 Belə ab + hər hansı bir n B 0 daha çox izləyir. 166 00:13:04,510 --> 00:13:08,000 ab? bir b 0 və ya 1 izlədi. 167 00:13:09,190 --> 00:13:18,580 ab {N} a b N izlədi, sonra belə edir. 168 00:13:18,580 --> 00:13:22,820 Siz buruq aşırma 2 ədəd varsa bir sıra ifadə edilir 169 00:13:23,300 --> 00:13:25,440 ki, bəlkə eşlemeli ola bilər. 170 00:13:26,390 --> 00:13:30,420 Beləliklə, biz bir dəqiqə bir neçə təkrar nümunələri daha çox görünür. 171 00:13:31,960 --> 00:13:42,300 Belə ki, burada alətləri uyğun bu model istifadə edərkən unutmayın 2 şeyi. 172 00:13:42,300 --> 00:13:52,120 Biz hm baxmaq istəyirəm deyirəm "Abraham Lincoln vetçina sendviç edir." 173 00:13:52,120 --> 00:13:55,230 Belə ki, Mən İbrahimə Abraham Lincoln adı dəyişdi. 174 00:13:55,230 --> 00:14:00,290 Və indi bu axtarış funksiyası geri nə axtarır 175 00:14:00,290 --> 00:14:03,270 və yalnız bu halda ham qaytarır. 176 00:14:03,620 --> 00:14:08,080 Və axtarış yalnız təbii sol ən queue edir, çünki ki, yoxdur. 177 00:14:08,080 --> 00:14:12,130 Və başqa hal nəzərdə tutulmayıbsa, bütün normal ifadeler edəcəyik. 178 00:14:12,830 --> 00:14:18,880 Biz bütün tapmaq istəyirdi ki, bir funksiyası var - bütün tapa bilərsiniz. 179 00:14:18,880 --> 00:14:35,100 Belə ki, yalnız bütün = re.findall (h.m ', mətn) kimi baxmaq bilər ki, 180 00:14:35,100 --> 00:14:44,540 və sonra) (all.group. 181 00:14:44,540 --> 00:14:51,040 Bütün vetçina və vetçina həm istehsal, hər bir kam bu halda həm İbrahim də tellər. 182 00:14:51,610 --> 00:14:55,110 Belə ki, başqa bir variant edir. 183 00:14:56,250 --> 00:15:06,940 >> Böyük. Unutmayın digər şey normal ifadeler daxilən ən böyük almaq edir. 184 00:15:06,940 --> 00:15:09,520 Bizə bu misal baxaq. 185 00:15:10,200 --> 00:15:16,070 Biz burada sol ən axtarış etdi, sonra mən daha böyük axtarış cəhd 186 00:15:16,070 --> 00:15:18,800 ki, Kleene star operator istifadə edərək. 187 00:15:18,800 --> 00:15:24,180 Belə ki, üçün, "Abraham Lincoln, vetçina sandviçler edir" və mən yalnız geri almış 188 00:15:24,180 --> 00:15:26,280 nəticəsində m. 189 00:15:26,280 --> 00:15:31,670 Ki, səhv səbəb mən hər hansı bir sayı da gedə bilərdik idi ki, 190 00:15:31,670 --> 00:15:36,140 Mən h və m arasında getmək üçün bir şey göstərmədi, çünki h var. 191 00:15:36,140 --> 00:15:42,010 M idi ki, orada yalnız nümunə - bu m ilə yalnız nümunələri 192 00:15:42,010 --> 00:15:46,220 və h-nin bir sıra yalnız simli m idi. 193 00:15:46,490 --> 00:15:51,850 Sonra yenidən cəhd, dedim, "OK, bizə burada faktiki ən böyük qrup almaq edək." 194 00:15:51,850 --> 00:15:59,670 Və sonra h etdim. * M, yalnız h və m arasında simvol hər hansı bir sayı qaytarır ki. 195 00:16:00,280 --> 00:16:02,950 Və yalnız həyata başlayan və tamam, yaxşı bu, Oh "edəcək düşünür əgər 196 00:16:02,950 --> 00:16:11,560 Mənə vetçina olsun "faktiki Abraham Lincoln-ci h hər şey edir 197 00:16:11,560 --> 00:16:13,690 vetçina sonuna bütün yol. 198 00:16:14,040 --> 00:16:18,110 Bu görməmiş, bu h görür - bütün bunlar digər mətn - m, 199 00:16:18,110 --> 00:16:21,280 və bu da edir nə 200 00:16:22,060 --> 00:16:27,480 Bu xüsusilə egregious - bu biz həmçinin bir xüsusiyyət 201 00:16:27,480 --> 00:16:30,670 , digər funksiyaları istifadə edərək görməmiş olmaq üçün daxil. 202 00:16:31,480 --> 00:16:34,490 Amma bu biz xüsusilə unutmayın üçün bir şey deyil 203 00:16:34,490 --> 00:16:38,720 HTML mətn baxan zaman, hansı bir səbəb ki, 204 00:16:38,720 --> 00:16:41,500 normal ifadeler HTML üçün çətindir. 205 00:16:42,460 --> 00:16:46,310 Çünki ortada bir HTML açıq tag və sonra məhsulları çox varsa 206 00:16:46,310 --> 00:16:49,820 və sonra bir sıra digər HTML, proqram daha sonra tag bağlıdır 207 00:16:49,820 --> 00:16:55,420 yalnız bəlkə səhvən HTML kodu bir çox yeyilmiş var. 208 00:16:56,200 --> 00:17:01,840 >> Bütün hüququ - belə daha xüsusi simvollar, bir çox digər dillərdə kimi, 209 00:17:01,840 --> 00:17:04,780 biz çizgi istifadə edərək xilas. 210 00:17:04,780 --> 00:17:10,329 Beləliklə, biz yeni bir xətt istisna olmaqla, hər hansı bir xarakter belirlemek üçün dot istifadə edə bilərsiniz. 211 00:17:10,329 --> 00:17:14,550 Biz hər hansı bir əlifba xarakter müəyyən etmək escape w istifadə edə bilərsiniz. 212 00:17:14,550 --> 00:17:20,329 Və hər hansı bir tam üçün analogiya escape d - ədədi xarakter. 213 00:17:20,630 --> 00:17:27,440 Biz daxil edə bilərsiniz - biz bağlı ifadələr müəyyən etmək üçün Mötərizədə istifadə edə bilərsiniz. 214 00:17:27,440 --> 00:17:30,970 Belə ki, bu, b, c və ya qəbul olardı. 215 00:17:31,320 --> 00:17:37,000 Və biz də müəyyən və ya A və ya B ya üçün variantları bilərsiniz. 216 00:17:37,000 --> 00:17:41,110 - Məsələn, biz çox imkanlar axtarır, əgər 217 00:17:41,110 --> 00:17:44,940 Mötərizədə biz kimi və ya operator istifadə edə bilər - 218 00:17:44,940 --> 00:17:52,480 bizə burada bu nümunə geri gidelim. 219 00:17:53,000 --> 00:17:59,790 Sonra bizə bu nümunə geri qoy, və - İndi bizi bildirin 220 00:17:59,790 --> 00:18:12,290 AE almaq - bu qayıtmalıdırlar - Bu hələ İbrahim danışarlar. 221 00:18:12,290 --> 00:18:17,410 Bu, - biz bütün nə varsa - böyük. 222 00:18:17,410 --> 00:18:22,700 Belə ki, bizim burada mətn yeniləmə imkan verir. 223 00:18:22,700 --> 00:18:34,690 "Onun hemming isə İbrahim vetçina yeyir -. Hemming isə" Böyük. 224 00:18:44,090 --> 00:18:47,330 Bütün. Böyük. İndi vetçina, vetçina, və hem almaq. 225 00:18:48,510 --> 00:18:59,370 Hemming isə - ona uğultu isə - hem ona uğultu edir. Böyük. 226 00:19:00,350 --> 00:19:03,250 Eyni şey. 227 00:19:03,820 --> 00:19:09,180 İndi bütün zümzümə və ya ona aldığınız olmadan hələ yalnız, vetçina vetçina, və hem qaytarır. 228 00:19:09,940 --> 00:19:22,600 Böyük - biz ya baxmaq istəyirdi əgər belə nə - biz də edə bilər 229 00:19:23,510 --> 00:19:33,810 onu və ya - biz ki, geri gələcək. 230 00:19:34,810 --> 00:19:45,760 Okay - belə - bütün hüququ - vəzifələrdə siz də caret və ya dollar işarəsi istifadə edə bilərsiniz 231 00:19:45,760 --> 00:19:49,350 Siz start bir şey və ya simli sonuna axtarır ki, müəyyən etmək üçün. 232 00:19:50,260 --> 00:19:52,260 Və ya başlanğıc və ya bir söz sonunda. 233 00:19:52,400 --> 00:19:54,470 Ki, istifadə etmək üçün bir yoldur. 234 00:19:55,630 --> 00:20:01,160 >> Okay - bizə mətn bir qədər böyük bloku ilə ətrafında oynamaq edək. 235 00:20:03,950 --> 00:20:08,310 Bizi burada Bu sırada deyim - bu bəyanat burada. 236 00:20:08,310 --> 00:20:11,360 Normal ifade gücünü onlar nümunələri daxil edə bilərsiniz ki, 237 00:20:11,360 --> 00:20:13,390 yalnız simvol sabit deyil. 238 00:20:14,900 --> 00:20:18,790 Bizi edək - bizə bu blok zəng edək. 239 00:20:22,400 --> 00:20:27,110 Sonra o da bütün oxuyacaq 240 00:20:28,890 --> 00:20:50,820 Və sonra bir var - bizə = edək, biz faydalı burada axtarmaq bilər, bəzi şeylər belə nə var? 241 00:20:50,820 --> 00:20:54,070 Biz ifadə qulaq axtarmaq bilər. 242 00:20:55,050 --> 00:21:01,520 Çox maraqlı. Necə ki, haqqında? Biz nə görürsünüz. 243 00:21:03,710 --> 00:21:05,710 Mən bunu bir problem verdi. 244 00:21:06,380 --> 00:21:10,750 Belə ki, yenidən və bütün əvvəl şeyi hər hansı bir sayı. 245 00:21:10,750 --> 00:21:15,630 Belə ki, ilin əvvəlinə qədər bəlkə də bütün yenidən bir neçə dəfə hər şey qayıtmalıdırlar. 246 00:21:18,800 --> 00:21:21,970 Və sonra burada normal ifadeler qüdrəti var ki, onlar 247 00:21:21,970 --> 00:21:24,900 nümunələri daxil edə bilərsiniz burada simvol deyil, yalnız var. 248 00:21:24,900 --> 00:21:28,510 Belə qədər yekun yenidən bütün yol, bu sol ən ilə başladı və tamahkar idi. 249 00:21:30,710 --> 00:21:32,710 Yanımızda görmək edək - Biz başqa nə ola bilər. 250 00:21:32,710 --> 00:21:39,860 Siz əvəzlik axtarmaqda maraqlı olsam bir şey tapmaq o və o, 251 00:21:39,860 --> 00:21:44,600 siz s 0 və ya 1-ə bərabər olması üçün kontrol bilər 252 00:21:44,600 --> 00:21:49,710 və ifadə o ki, yəqin ki, qayıtmaq niyyətində deyil - 253 00:21:49,710 --> 00:21:58,020 oh, mən orada biz burada, elektrik, O gün edilir axtarır, çünki o geri danışarlar. 254 00:22:00,590 --> 00:22:06,270 Bizə bu şey əvvəlində gəlmişsə olduğunu ifadə edək. 255 00:22:06,640 --> 00:22:09,530 Off damla bize nəzər salaq. 256 00:22:09,530 --> 00:22:19,630 Beləliklə, biz yağ edə bilər, orada biz bir şey yoxdur, çünki o və o, 257 00:22:19,630 --> 00:22:22,870 bu söz baş yoxdur. 258 00:22:24,960 --> 00:22:30,410 Böyük. Okay - belə geri pişik burada. 259 00:22:30,410 --> 00:22:35,720 Belə ki, kompleks nümunələri beyin zərər verir. 260 00:22:35,720 --> 00:22:40,500 Biz bu məsələləri qarşısını almaq üçün normal ifadeler istifadə niyə belə edir. 261 00:22:40,820 --> 00:22:43,520 >> Belə ki, burada sizinlə ətrafında oynaya bilər bir sıra digər faydalı rejimi. 262 00:22:43,520 --> 00:22:50,290 Biz bu gün axtarış baxdı, ancaq matçı, split, findall, və qruplar istifadə edə bilərsiniz. 263 00:22:50,290 --> 00:22:53,970 Yalnız başqa normal ifadeler ilə edə bilərsiniz digər cool şeylər 264 00:22:53,970 --> 00:22:58,870 nümunələri üçün bir model alaraq və bütün matçları keçirilir - 265 00:22:58,870 --> 00:23:02,530 onun dəyişənlər - və sonra sizin kodu o istifadə edir. 266 00:23:02,850 --> 00:23:05,980 Bu olduqca faydalı ola bilər. Digər şeylər hesablanması bilər. 267 00:23:05,980 --> 00:23:11,720 Beləliklə, biz bir normal ifade model hallarda sayı arxalana bilər 268 00:23:11,720 --> 00:23:13,960 və biz qruplar istifadə edə bilərsiniz edir. 269 00:23:13,960 --> 00:23:17,550 Və digər rejimləri, eləcə də mümkündür. 270 00:23:18,040 --> 00:23:22,980 Beləliklə, mən yalnız normal ifadeler istifadə edə bilərsiniz digər yolları haqqında bir az daha danışmaq istəyirəm. 271 00:23:22,980 --> 00:23:29,100 >> Belə ki, bir çox inkişaf etmiş proqram səlis eşleme edir. 272 00:23:29,100 --> 00:23:33,450 Siz ifadə, Julius Sezar, bir mətn üçün axtarır Belə ki, əgər 273 00:23:33,450 --> 00:23:37,740 və başqa dillərdə Gaius Julius Caesar və ya adı Julius Caesar ya bax 274 00:23:37,740 --> 00:23:44,400 sonra siz də o dəyərləri bəzi çəki təyin edə bilərsiniz. 275 00:23:44,400 --> 00:23:48,930 Və yaxın kifayət qədər olduqda - bu, müəyyən ərəfəsində keçir əgər - onda istədiyiniz 276 00:23:48,930 --> 00:23:50,860 Julius Sezar qəbul etmək. 277 00:23:50,860 --> 00:24:00,580 Belə ki, eləcə də bir neçə digər dillərdə ki, bir neçə müxtəlif tətbiqləri var. 278 00:24:02,580 --> 00:24:08,420 Lazımlı bir az app online - Burada bir sıra digər alətlər, regex Pal var 279 00:24:08,420 --> 00:24:12,190 Sizin normal ifadeler düzgün tərtib etmədiyinizi yoxlayın. 280 00:24:12,190 --> 00:24:18,500 Sizin masa üstü çalıştırabilirsiniz ki, bağımsız alətləri də var 281 00:24:18,500 --> 00:24:22,100 Ultra Pico, habelə yalnız tarifler kimi. 282 00:24:22,100 --> 00:24:25,410 Əgər normal ifadeler bir ton nəzərdə tutan layihə edirik Belə ki, əgər 283 00:24:25,410 --> 00:24:29,810 Bu yəqin ki, bu gün kənarda getmək üçün yerdir. 284 00:24:31,520 --> 00:24:35,770 Və sonra yalnız nə qədər ortaq bir fikir verə 285 00:24:35,770 --> 00:24:44,090 grep Unix var, Perl inşa-in malikdir və C C. üçün PCRE var 286 00:24:44,090 --> 00:24:48,890 Və sonra bütün digər dillərdə də normal ifade paketlərin 287 00:24:48,890 --> 00:24:52,020 ki, biz bu gün bir dad var mahiyyətcə eyni sintaksis ilə fəaliyyət göstərir. 288 00:24:52,020 --> 00:24:54,790 PHP, Java, Ruby, və s. 289 00:24:56,080 --> 00:24:58,980 >> Google Code Search həqiqətən qeyd edilməlidir, o biri 290 00:24:58,980 --> 00:25:05,720 ictimai daxil olmaq üçün imkan verir ki, orada nisbətən neçə proqram 291 00:25:05,720 --> 00:25:07,800 normal ifadeler istifadə edərək verilənlər bazası. 292 00:25:07,800 --> 00:25:12,920 Google Code Search baxmaq Belə ki, əgər kod tapa bilərsiniz 293 00:25:12,920 --> 00:25:16,880 bir funksiyası istifadə edilə bilər necə bir misal axtarır əgər, 294 00:25:16,880 --> 00:25:21,610 müxtəlif hallarda bütün növ istifadə olunur ki, funksiyası tapmaq üçün normal ifade istifadə edə bilərsiniz. 295 00:25:21,610 --> 00:25:28,000 Siz fwrite axtarmaq bilər, və sonra silinməsinin bayraq üçün baxmaq və ya oxuya bilər 296 00:25:28,000 --> 00:25:32,000 Əgər bu halda istifadə olunur fwrite nümunəsi istəyirdi. 297 00:25:33,530 --> 00:25:37,010 Burada, eyni orada şey, bəzi istinadlar var. 298 00:25:37,010 --> 00:25:40,990 Bu hücumçu gedir, eləcə də mövcud online olacaq 299 00:25:40,990 --> 00:25:45,560 Python, grep, Perl baxmaq istəyirəm - yalnız bir ilham almaq istəyirlər 300 00:25:45,560 --> 00:25:50,650 burada nəzəriyyə daha çox baxmağa istəyirsinizsə və ya yerlərdə off yaxşı jumping edir. 301 00:25:50,650 --> 00:25:53,870 Çox sağ olun. 302 00:25:58,470 --> 00:25:59,910 [CS50.TV]