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 این بیان به طور منظم در روبی است. 21 00:01:25,550 --> 00:01:29,280 این وحشتناکی در سراسر زبان های مختلف نیست. 22 00:01:29,690 --> 00:01:37,630 ما فقط بر کوفتگی زخم برای شروع و علامت بیان به طور منظم در روبی. 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 در کد توزیع برای پی اچ پی ما در واقع بیان ساده به طور منظم. 47 00:03:40,760 --> 00:03:46,790 و این یکی فقط به سادگی به دنبال بررسی کنید اگر صفحه وب است که در گذشت 48 00:03:46,790 --> 00:03:51,940 منطبق یا با نام کاربری خود وارد شوید و یا خروج برای ثبت نام اینجا را کلیک کنید. پی اچ پی. 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 در 1950s، و پس از آن ما تا به حال سردبیران ساده است که 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 ابزار بسیار محبوب که عبارات منظم در 1960s گنجانیده شده است. 81 00:06:14,160 --> 00:06:20,560 در '80s، پرل ساخته شد - یک زبان برنامه نویسی است که 82 00:06:20,560 --> 00:06:24,110 شامل عبارات منظم بسیار برجسته است. 83 00:06:24,550 --> 00:06:30,130 و سپس بیشتر به تازگی ما به پرل بیان سازگار به طور منظم داشتند 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 >> خوب، بنابراین بسیاری از شما در اینجا شخص کتابخانه پایتون مکینتاش، 112 00:08:40,169 --> 00:08:43,860 بنابراین شما در واقع می توانید بکشید تا بر روی صفحه نمایش خود را. 113 00:08:43,860 --> 00:08:47,480 عبارات منظم به پایتون ساخته شده است. 114 00:08:48,070 --> 00:08:53,020 و به همین ترتیب پایتون بر روی مکینتاش و به صورت آنلاین نیز در این لینک در دسترس قبل نصب شده است. 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 پایتون همچنین به عنوان یک تقلب ورق ارائه شده است. 120 00:09:17,720 --> 00:09:23,100 نسخه 3 از پایتون وجود دارد، اما مک خود را لزوما 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 خوب، بنابراین برخی از اصول اولیه استفاده از عبارات منظم در پایتون. 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 یکی دیگر از چیزی است که ما می توانیم انجام دهیم، استفاده از رشته ها قبل از ما از متن در پیتون. 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 و سپس بیان می تواند ساعت، و پس از آن من به نقطه متر انجام. 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 بنابراین برای انجام و پس از هر تعداد از ب - آیا شما 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} است توسط 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 با استفاده از عملگر ستاره کلین. 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 ساعت چرا که من هر چیزی را در بین H و M مشخص نیست. 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 و سپس من در ساعت. * متر، به طوری که فقط هر تعداد از شخصیت های بین h و m می گرداند. 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 حریص است، آن را می بیند در ساعت - این همه متن دیگر - M، 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 بنابراین این که 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 "ابراهیم می خورد ژامبون در حالی که 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 و شما هم Gaius ژولیوس سزار یا نام ژولیوس سزار را در زبان های دیگر، 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 در یونیکس وجود دارد، پرل ساخته شده است در، و 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 پی اچ پی، جاوا، روبی، و به همین ترتیب. 289 00:24:56,080 --> 00:24:58,980 >> کد جستجو در گوگل است که در واقع به ذکر است، آن است که یکی از 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 بنابراین اگر شما در جستجوی گوگل کد نگاه کنید، شما می توانید پیدا کردن کد 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 شما می خواهید در پایتون، grep، پرل نگاهی - شما فقط می خواهید برای دریافت برخی از الهام 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]