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 هذا هو التعبير العادي في روبي. 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 المنصوص عليها في قانون توزيعة ل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 في 1950s، وبعد ذلك كان لدينا المحررين البسيطة التي 78 00:05:59,580 --> 00:06:03,300 أدرجت التعابير العادية - مجرد البحث عن السلاسل. 79 00:06:03,570 --> 00:06:09,110 البقرى - الذي هو أداة سطر الأوامر - كان واحدا من أول 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 ح ومن ثم \ ث ثم م حتى \ ث يقبل فقط أي حرف أبجدي في هناك. 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 شيء آخر يمكن أن نفعله هو استخدام لدينا سلاسل من قبل النص في بيثون. 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 {N} 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 لذلك نقول أننا نريد أن ننظر إلى 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 M نتيجة لذلك. 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 ذلك هو الجشع، بل يرى ح - كل هذا نص آخر - 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 لذلك هذا سيقبل أ، ب، ج أو. 215 00:17:31,320 --> 00:17:37,000 ويمكننا أيضا تحديد أو خيارات إما A أو B. 216 00:17:37,000 --> 00:17:41,110 على سبيل المثال - إذا كنا نبحث عن إمكانيات متعددة 217 00:17:41,110 --> 00:17:44,940 بين قوسين يمكننا استخدام المشغل أو كما في - 218 00:17:44,940 --> 00:17:52,480 لذلك دعونا نعود إلى هذا المثال هنا. 219 00:17:53,000 --> 00:17:59,790 والآن دعونا نأخذ - دعونا نعود إلى هذا المثال هنا، وبعد ذلك 220 00:17:59,790 --> 00:18:12,290 اتخاذ AE - حتى هذا يجب أن تعود - أعتقد أن هذا لا يزال إبراهيم. 221 00:18:12,290 --> 00:18:17,410 لذلك هذا - إذا فعلنا كل - كبيرة. 222 00:18:17,410 --> 00:18:22,700 لذلك دعونا تحديث النص هنا. 223 00:18:22,700 --> 00:18:34,690 "إبراهيم يأكل لحم الخنزير في حين هدب له - في حين هدب." كبيرة. 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 بحيث يجب أن تعود كل شيء من البداية حتى ربما كل إعادة بضع مرات. 246 00:21:18,800 --> 00:21:21,970 ثم هنا لدينا قوة التعابير العادية هو أنها 247 00:21:21,970 --> 00:21:24,900 يمكن تحديد أنماط ليس فقط حرفا هنا. 248 00:21:24,900 --> 00:21:28,510 لذلك كل وسيلة تصل إلى النهائي من جديد، أنها بدأت مع أقصى اليسار، وكان الجشع. 249 00:21:30,710 --> 00:21:32,710 دعونا نرى - ماذا يمكن أن نتطلع إليه. 250 00:21:32,710 --> 00:21:39,860 أعتقد أن شيئا واحدا إذا كنت مهتما في البحث عن الضمائر هي وانه، 251 00:21:39,860 --> 00:21:44,600 هل يمكن أن تحقق ليالي يجري على قدم المساواة إلى 0 أو 1 252 00:21:44,600 --> 00:21:49,710 والتعبير هو، والذي ربما لن يعود - 253 00:21:49,710 --> 00:21:58,020 أوه، وأنا أعتقد أنه عاد لأنه ونحن نبحث في السلطة، وذلك اليوم، وهنا. 254 00:22:00,590 --> 00:22:06,270 دعونا نحاول تحديد أن هذا يجب أن يأتي في بداية شيء. 255 00:22:06,640 --> 00:22:09,530 دعونا نرى ما اذا كان يسقط. 256 00:22:09,530 --> 00:22:19,630 حتى نتمكن من القيام الدهون، وهناك لم نحصل على أي شيء لأنها وانه 257 00:22:19,630 --> 00:22:22,870 لا تحدث في هذه العبارة. 258 00:22:24,960 --> 00:22:30,410 كبيرة. حسنا - يعود ذلك إلى القط هنا. 259 00:22:30,410 --> 00:22:35,720 أنماط معقدة لدرجة يضر الدماغ. 260 00:22:35,720 --> 00:22:40,500 لذلك هذا هو السبب في أننا نستخدم التعابير العادية لتجنب هذه المشكلات. 261 00:22:40,820 --> 00:22:43,520 >> حتى هنا بعض وسائط أخرى مفيدة يمكن أن تقوم به مع حولها. 262 00:22:43,520 --> 00:22:50,290 ونحن ننظر في بحث اليوم، ولكن يمكنك أيضا استخدام مباراة، والانقسام، findall، والمجموعات. 263 00:22:50,290 --> 00:22:53,970 الأشياء الرائعة الأخرى حتى تتمكن من القيام مع التعبيرات العادية إلى جانب فقط 264 00:22:53,970 --> 00:22:58,870 يبحث عن أنماط تتخذ نمطا وعقد جميع المباريات - 265 00:22:58,870 --> 00:23:02,530 متغيراته - ومن ثم استخدام تلك التعليمات البرمجية الخاصة بك في وقت لاحق. 266 00:23:02,850 --> 00:23:05,980 يمكن أن تكون مفيدة جدا. الأشياء الأخرى التي يمكن عد. 267 00:23:05,980 --> 00:23:11,720 لذلك نستطيع أن نعول على عدد من الحالات من نمط التعبير العادي، 268 00:23:11,720 --> 00:23:13,960 وهذا هو ما يمكننا استخدام مجموعات ل. 269 00:23:13,960 --> 00:23:17,550 وسائط أخرى هي كذلك أيضا ممكن. 270 00:23:18,040 --> 00:23:22,980 لذلك أنا فقط أريد أن أتحدث أكثر قليلا عن طرق أخرى يمكنك استخدام تعبيرات عادية. 271 00:23:22,980 --> 00:23:29,100 >> لذا على المرء تطبيق أكثر تقدما هو في مطابقة غامض. 272 00:23:29,100 --> 00:23:33,450 حتى إذا كنت تبحث عن نص للتعبير، يوليوس قيصر، 273 00:23:33,450 --> 00:23:37,740 وترى إما جايوس يوليوس قيصر أو اسم يوليوس قيصر في لغات أخرى، 274 00:23:37,740 --> 00:23:44,400 فإنك قد ترغب أيضا في تعيين بعض الوزن لتلك القيم. 275 00:23:44,400 --> 00:23:48,930 وإذا كانت قريبة بما فيه الكفاية - إذا كان يعبر عتبة معينة - ثم تريد 276 00:23:48,930 --> 00:23:50,860 لتكون قادرة على قبول يوليوس قيصر. 277 00:23:50,860 --> 00:24:00,580 لذلك هناك بضعة تطبيقات مختلفة لأنه في بعض اللغات الأخرى كذلك. 278 00:24:02,580 --> 00:24:08,420 وهنا بعض الأدوات الأخرى، رجإكس بال - التطبيق مفيد قليلا على الانترنت ل 279 00:24:08,420 --> 00:24:12,190 تحقق مما إذا وتتكون التعبيرات العادية الخاصة بك بشكل صحيح. 280 00:24:12,190 --> 00:24:18,500 هناك أيضا أدوات بذاتها التي يمكن تشغيلها من سطح المكتب 281 00:24:18,500 --> 00:24:22,100 مثل بيكو جدا، وكذلك كتب الطبخ فقط. 282 00:24:22,100 --> 00:24:25,410 لذلك إذا كنت أفعل المشروع الذي ينطوي على الكثير من التعبيرات العادية 283 00:24:25,410 --> 00:24:29,810 وربما هذا هو المكان المناسب للذهاب خارج نطاق اليوم. 284 00:24:31,520 --> 00:24:35,770 وبعد ذلك فقط لإعطائك فكرة عن كيفية المشترك هو 285 00:24:35,770 --> 00:24:44,090 هناك البقرى في يونكس، وبيرل وقد بنيت في، وC هناك PCRE لC. 286 00:24:44,090 --> 00:24:48,890 وبعد ذلك كل هذه اللغات الأخرى أيضا حزم التعبير العادي 287 00:24:48,890 --> 00:24:52,020 التي تعمل مع نفسها أساسا بناء الجملة حصلنا على طعم اليوم. 288 00:24:52,020 --> 00:24:54,790 PHP، جافا، روبي، وهلم جرا. 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 كنت تريد أن تبدو في بيثون، البقرى، بيرل - كنت ترغب فقط في الحصول على بعض الإلهام 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]