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 اور آپ کو اپنے اپنے طور پر زیادہ وسائل کے بعد جانے کے لئے کافی wherewithal دے. 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 ہم روبی میں باقاعدہ اظہار شروع اور موقع پر صرف slashes پر ہے. 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 تو باقاعدہ اظہار متن میں patters تلاش کرنے کے لئے پروٹوکول ہیں. 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 ڈائریکٹری اپ ڈیوڈ rips سے پہلے ہم کو تلاش کر سکتے ہیں 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 کوڈ میں مقرر کیا ہم واقعی ایک سادہ باقاعدہ اظہار ہے. 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 تو ان زبانوں کے لئے سرشار parsers ہیں. 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 تو بنیادی طور پر زبانوں کے لئے ایک Chomsky کے تنظیمی ڈھانچے، ہے 73 00:05:33,150 --> 00:05:38,400 اور باقاعدہ اظہار کی طلب یونین، concatenation، کا استعمال کرتے ہوئے کی تعمیر کر رہے ہیں 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 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 آپ کو اس کا کام ہے کہ پنراورتی loops بنانے کے حملوں ہے 108 00:08:21,610 --> 00:08:24,400 میموری کی صلاحیت overrun. 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 اور اس ازگر اس لنک میں میکس اور بھی آن لائن دستیاب پر preloaded ہے. 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 preloaded اس کے ساتھ آتے ہیں. 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 اس پاگل متن - - ہم اس کو ایک متن کی انگوٹی ہوتا تو واپس slashes کے بہت سے کا کہنا ہے کہ شامل 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 + ایک کسی ن ب کے 0 سے زیادہ کی طرف سے بعد ہے. 166 00:13:04,510 --> 00:13:08,000 AB؟ ایک ب 0 یا 1 کے بعد. 167 00:13:09,190 --> 00:13:18,580 AB {ن} کا ایک ب کی (ن) کے بعد، اور پھر اسی طرح کی ہے. 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 >> عظیم. کو ذہن میں رکھنے کے لئے دوسری چیز باقاعدہ اظہار intuitively سب سے بڑی لے ہے. 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 میٹر تھا کہ وہاں صرف مثال کے طور پر - اس میں میٹر کے ساتھ وہاں صرف مثالیں 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 اور پھر میں ح کیا. * 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 ایچ ٹی ایم ایل متن کو دیکھ کر جب، جس کی ایک وجہ یہ ہے کہ 204 00:16:38,720 --> 00:16:41,500 باقاعدہ اظہار کی طلب ایچ ٹی ایم ایل کے لئے مشکل ہے. 205 00:16:42,460 --> 00:16:46,310 کیونکہ تم درمیان میں ایک HTML ٹیگ کھولیں اور پھر چیزیں بہت ہے تو 206 00:16:46,310 --> 00:16:49,820 اور پھر کچھ دوسرے ایچ ٹی ایم ایل، پروگرام میں بہت بعد میں ٹیگ بند 207 00:16:49,820 --> 00:16:55,420 آپ صرف ممکنہ طور پر غلطی سے آپ ایچ ٹی ایم ایل کوڈ کا ایک بہت کھا لیا ہے. 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 تو یہ ایک، 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 کرتے ہوئے - اس کے پاس humming جبکہ - ہیم نے اس سے humming جبکہ. عظیم. 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 آپ pronouns کے لئے تلاش میں دلچسپی رکھتے تھے تو میں ایک بات لگتا ہے وہ اور وہ، 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 اور آپ کو دیگر زبانوں میں گیس جولیس سیزر یا نام Julius کیسر یا تو دیکھ 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 پال ہیں 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 الٹرا پیکو، اور اسی طرح صرف cookbooks کی طرح. 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 یونیکس میں ہے، پرل کی تعمیر میں ہے، اور سی سی کے لئے PCRE ہے 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]