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 के बीच अक्षर इतने पर शुद्ध.,. कॉम के लिए लग रही है, और करने के लिए. 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 php के लिए distro के कोड में सेट हम वास्तव में एक साधारण नियमित अभिव्यक्ति है. 47 00:03:40,760 --> 00:03:46,790 और यह एक बस बस वेब पेज में पारित कर दिया है कि अगर जाँच करने के लिए देख रहा है 48 00:03:46,790 --> 00:03:51,940 या तो लॉगिन से मेल खाता है या रजिस्टर लॉगआउट. PHP के. 49 00:03:52,220 --> 00:03:57,910 और फिर कि नियमित अभिव्यक्ति मिलान के आधार पर सही या गलत लौटने. 50 00:03:59,400 --> 00:04:01,740 >> तो जब आप नियमित अभिव्यक्ति का उपयोग करते हैं? 51 00:04:01,740 --> 00:04:04,820 क्यों तुम यहाँ आज कर रहे हैं? 52 00:04:05,330 --> 00:04:08,480 वहाँ कुछ है कि जब तो आप नियमित अभिव्यक्ति का उपयोग नहीं करना चाहती 53 00:04:08,480 --> 00:04:11,640 और भी अधिक आसानी से आप के लिए काम करता है. 54 00:04:11,640 --> 00:04:15,510 तो XML और HTML वास्तव में बहुत मुश्किल हैं 55 00:04:15,510 --> 00:04:18,480 हम एक छोटा सा में देखेंगे के लिए नियमित अभिव्यक्ति लिखने के लिए. 56 00:04:19,110 --> 00:04:23,280 तो उन भाषाओं के लिए समर्पित पारसर्स हैं. 57 00:04:24,170 --> 00:04:30,060 आप भी अक्सर व्यापार नापसंद और सटीकता के साथ ठीक करने की आवश्यकता है. 58 00:04:30,060 --> 00:04:36,220 आप कोशिश कर रहे हैं - तो हम एक ईमेल पते के लिए एक नियमित अभिव्यक्ति देखा 59 00:04:37,370 --> 00:04:42,590 लेकिन आप एक विशिष्ट ईमेल पता चाहते थे और धीरे - धीरे कहना 60 00:04:42,590 --> 00:04:48,570 यह अधिक सटीक हो गया के रूप में नियमित रूप से अभिव्यक्ति और अधिक जटिल हो सकता है. 61 00:04:49,580 --> 00:04:52,260 इसलिए कि एक व्यापार बंद हो जाएगा. 62 00:04:52,260 --> 00:04:55,330 आप ठीक नियमित अभिव्यक्ति के साथ बना रहे हैं कि सुनिश्चित किया जाना है. 63 00:04:55,330 --> 00:04:57,920 आप के लिए देख रहे हैं कि वास्तव में क्या पता है कि इसे और अधिक समझ कर सकता है 64 00:04:57,920 --> 00:05:02,070 समय में डाल दिया है और एक अधिक प्रभावी पार्सर लिखने के लिए. 65 00:05:02,070 --> 00:05:06,980 और अंत में नियमितता के साथ एक ऐतिहासिक मुद्दा है 66 00:05:06,980 --> 00:05:08,940 भाव और भाषा की. 67 00:05:08,940 --> 00:05:12,960 नियमित अभिव्यक्ति वास्तव में बहुत अधिक शक्तिशाली की तुलना में कर रहे हैं 68 00:05:12,960 --> 00:05:16,450 प्रति नियमित अभिव्यक्ति का एक औपचारिक अर्थ में कहते हैं. 69 00:05:17,130 --> 00:05:20,150 >> तो मुझे लगता है, औपचारिक सिद्धांत में बहुत दूर जाना नहीं करना चाहती 70 00:05:20,150 --> 00:05:24,000 लेकिन सबसे अधिक भाषाओं हम वास्तव में कोड नियमित रूप से नहीं कर रहे हैं. 71 00:05:24,000 --> 00:05:29,110 नियमित अभिव्यक्ति कभी कभी लगता है कि सभी सुरक्षित नहीं माना जाता है और यह कारण है. 72 00:05:29,670 --> 00:05:33,150 तो बुनियादी तौर पर भाषाओं के लिए एक चोमस्की पदानुक्रम, वहाँ है 73 00:05:33,150 --> 00:05:38,400 और नियमित अभिव्यक्ति संघ, कड़ी, का उपयोग करने का निर्माण कर रहे हैं 74 00:05:38,400 --> 00:05:41,810 और हम कुछ ही मिनटों में क्लीन तारा आपरेशन देखेंगे. 75 00:05:43,130 --> 00:05:48,860 आप रुचि रखते हैं सिद्धांत में हुड के तहत वहाँ पर जा रही एक बहुत कुछ है. 76 00:05:50,360 --> 00:05:55,880 >> एक संक्षिप्त इतिहास - तो बस यहां संदर्भ के लिए - नियमित रूप से सेट आया 77 00:05:55,880 --> 00:05:59,580 1950 के दशक में, और फिर हम उस सरल संपादकों था 78 00:05:59,580 --> 00:06:03,300 नियमित अभिव्यक्ति शामिल - बस तार के लिए खोज. 79 00:06:03,570 --> 00:06:09,110 Grep - जो एक कमांड लाइन उपकरण है - पहले की गई थी 80 00:06:09,110 --> 00:06:14,160 1960 के दशक में नियमित अभिव्यक्ति शामिल है कि बहुत लोकप्रिय उपकरण. 81 00:06:14,160 --> 00:06:20,560 80 के दशक में, पर्ल बनाया गया था - एक प्रोग्रामिंग भाषा है कि 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 और फिर मैं तो \ डब्ल्यू सिर्फ वहाँ में किसी भी वर्णमाला चरित्र स्वीकार करता है. 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 नियमित अभिव्यक्ति तुम पत्र आर डाल दिया. 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 तो ख के किसी भी नंबर से एक का पालन करने के लिए - तुम अब * करते हैं. 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 तो अब + एक किसी भी एन बी के 0 से अधिक द्वारा पीछा किया है. 166 00:13:04,510 --> 00:13:08,000 अब? एक ख 0 या 1 के द्वारा पीछा किया. 167 00:13:09,190 --> 00:13:18,580 अब {एन} एक ख के एन द्वारा पीछा किया, और फिर इतने पर है. 168 00:13:18,580 --> 00:13:22,820 आप घुंघराले ब्रेसिज़ में 2 नंबर है, तो आप एक सीमा निर्दिष्ट कर रहे हैं 169 00:13:23,300 --> 00:13:25,440 कि संभवतः मिलान किया जा सकता है. 170 00:13:26,390 --> 00:13:30,420 तो हम एक मिनट में एक जोड़े को दोहराए पैटर्न पर अधिक गौर करेंगे. 171 00:13:31,960 --> 00:13:42,300 तो यहाँ उपकरण मिलान इन पैटर्न का उपयोग करते समय मन में रखने के लिए 2 बातें. 172 00:13:42,300 --> 00:13:52,120 हम के एचएम पर देखना चाहता हूँ तो कहते हैं, "अब्राहम लिंकन हैम सैंडविच बनाता है." 173 00:13:52,120 --> 00:13:55,230 तो मैं ने इब्राहीम से अब्राहम लिंकन का नाम बदल दिया है. 174 00:13:55,230 --> 00:14:00,290 और अब हम इस खोज समारोह से वापस आ रहा है क्या देख रहे हो 175 00:14:00,290 --> 00:14:03,270 और यह केवल इस मामले में हैम देता है. 176 00:14:03,620 --> 00:14:08,080 और यह खोज सिर्फ स्वाभाविक रूप से छोड़ दिया सबसे कतार लेता है क्योंकि वह करता है. 177 00:14:08,080 --> 00:14:12,130 और अगर आप अन्यथा निर्दिष्ट जब तक सभी नियमित अभिव्यक्ति है कि क्या करेंगे. 178 00:14:12,830 --> 00:14:18,880 हम सभी को खोजने के लिए चाहता था, तो उस के लिए एक समारोह है - सब लगता है. 179 00:14:18,880 --> 00:14:35,100 तो बस सब = re.findall ('h.m', पाठ) की तरह लग सकता है 180 00:14:35,100 --> 00:14:44,540 और उसके बाद) (all.group. 181 00:14:44,540 --> 00:14:51,040 सभी हैम और हैम दोनों का उत्पादन, प्रत्येक हैम इस मामले में दोनों अब्राहम में तार की. 182 00:14:51,610 --> 00:14:55,110 तो यह एक और विकल्प है. 183 00:14:56,250 --> 00:15:06,940 >> बढ़िया है. मन में रखने के लिए दूसरी बात यह नियमित अभिव्यक्ति सहज सबसे बड़ा ले. 184 00:15:06,940 --> 00:15:09,520 हमें इस उदाहरण पर नजर डालते हैं. 185 00:15:10,200 --> 00:15:16,070 हम यहां कि बाएं सबसे खोज किया था, और फिर मैं एक बड़ा खोज का प्रयास 186 00:15:16,070 --> 00:15:18,800 क्लीन तारा ऑपरेटर का उपयोग कर. 187 00:15:18,800 --> 00:15:24,180 ऐसा करने के लिए, "अब्राहम लिंकन, हैम सैंडविच बनाता है" और मैं केवल वापस मिला 188 00:15:24,180 --> 00:15:26,280 एक परिणाम के रूप में मीटर. 189 00:15:26,280 --> 00:15:31,670 उस गलती के लिए कारण है कि मैं के किसी भी संख्या ले सकता था कि 190 00:15:31,670 --> 00:15:36,140 मैं घंटे और मीटर के बीच में जाने के लिए कुछ भी निर्दिष्ट नहीं किया है क्योंकि घंटे है. 191 00:15:36,140 --> 00:15:42,010 मीटर था कि वहाँ केवल उदाहरण - उस में मीटर के साथ वहाँ केवल उदाहरण 192 00:15:42,010 --> 00:15:46,220 और ज के किसी भी संख्या सिर्फ स्ट्रिंग मी थे. 193 00:15:46,490 --> 00:15:51,850 तो मैं इसे फिर से कोशिश की, मैंने कहा, "ठीक है, हमें यहां वास्तविक सबसे बड़े समूह के लिए चलते हैं." 194 00:15:51,850 --> 00:15:59,670 और फिर मैं ज किया. * मी, सिर्फ घंटे और मीटर के बीच वर्णों की किसी भी संख्या देता है तो. 195 00:16:00,280 --> 00:16:02,950 और अगर तुम सिर्फ बाहर शुरू कर रहे हैं और ठीक है, यह अच्छी तरह से, "ओह होगा सोच अगर 196 00:16:02,950 --> 00:16:11,560 मुझे हैम मिलता है, "यह वास्तव में अब्राहम लिंकन में ज से सब कुछ ले जाता है 197 00:16:11,560 --> 00:16:13,690 हैम का अंत करने के लिए सभी तरह से ऊपर. 198 00:16:14,040 --> 00:16:18,110 यह लालची है, यह ज देखता है - यह सब अन्य पाठ - मी, 199 00:16:18,110 --> 00:16:21,280 और कहा कि इसके अंदर क्या लगता है 200 00:16:22,060 --> 00:16:27,480 यह एक विशेष रूप से प्रबल है - यह है कि हम भी कर सकते हैं एक विशेषता है 201 00:16:27,480 --> 00:16:30,670 यह अन्य कार्यों का उपयोग लालची हो नहीं करने के लिए निर्दिष्ट करें. 202 00:16:31,480 --> 00:16:34,490 लेकिन यह है कि हम विशेष रूप से ध्यान में रखना है कुछ है 203 00:16:34,490 --> 00:16:38,720 HTML पाठ को देख, जो एक कारण है कि 204 00:16:38,720 --> 00:16:41,500 नियमित अभिव्यक्ति HTML के लिए मुश्किल हैं. 205 00:16:42,460 --> 00:16:46,310 क्योंकि आप बीच में एक HTML खुला टैग और फिर सामान के बहुत सारे हैं अगर 206 00:16:46,310 --> 00:16:49,820 और फिर कुछ अन्य HTML, कार्यक्रम में बहुत बाद में टैग बंद 207 00:16:49,820 --> 00:16:55,420 आप बस संभवतः गलती से अपने एचटीएमएल कोड का एक बहुत खा लिया है. 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 हम किसी भी अक्षर को निर्दिष्ट करने के लिए भागने डब्ल्यू का उपयोग कर सकते हैं. 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 और हम भी निर्दिष्ट या एक या ख या तो के लिए विकल्प कर सकते हैं. 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 ऐ ले - तो यह वापस आ जाना चाहिए - मैं यह अभी भी इब्राहीम का अनुमान है. 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 एक आसान सा app करने के लिए ऑनलाइन - यहाँ कुछ अन्य उपकरण, 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 ग्रेप यूनिक्स में वहाँ है, पर्ल में बनाया गया है, और सी सी के लिए 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 आप अजगर, ग्रेप, पर्ल में देखना चाहता हूँ - तुम सिर्फ कुछ प्रेरणा प्राप्त करना चाहते हैं 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]