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 আমার সম্পর্কে নাম John, এবং আমি রেগুলার এক্সপ্রেশন সম্পর্কে আজকের কথা বলা হবে. 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 ও হত্যার রহস্য solves. 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 তাই রেগুলার এক্সপ্রেশন টেক্সট 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 হয় সাথে মেলে লগইন অথবা রেজিস্টার logout. পিএইচপি. 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 তাই মূলত ভাষার জন্য একটি চমস্কি অনুক্রমের আছে, 73 00:05:33,150 --> 00:05:38,400 রেগুলার ইউনিয়ন, সংযুক্তকরণের ব্যবহার বিল্ড আপ করা হয় 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 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 '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 এবং তারপর আপনি - যদি অন্য কোনো বিকল্প reconstructing রাখা হয় 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 আপনি যে কাজ যে recursive loops করে আছে আছে 108 00:08:21,610 --> 00:08:24,400 মেমরি ক্ষমতা পদদলিত. 109 00:08:24,780 --> 00:08:29,540 এবং উপায় দ্বারা Regexen রেগুলার এক্সপ্রেশন সরকারি plurals এক 110 00:08:29,540 --> 00:08:32,890 এংলো স্যাক্সন মধ্যে oxen তুলনা করেছিলেন. 111 00:08:33,500 --> 00:08:40,169 >> ঠিক আছে, তাই পাইথন লাইব্রেরী ব্যক্তি এখানে আপনি অনেক Macs-এর আছে, 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 তাই পাইথন এই লিঙ্কে Macs-এবং এছাড়াও উপলব্ধ অনলাইন নেভিগেশন 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 তাই আমি Python-র সংস্করণ 2 সেইসাথে একটি ঠকাই শীট জন্য ম্যানুয়াল পেজে একটি লিঙ্ক দেওয়া. 120 00:09:17,720 --> 00:09:23,100 আছে Python-র একটি সংস্করণ 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 H ও তারপর \ W এবং তারপর M তাই \ W ঠিক আছে কোন বর্ণের অক্ষর গ্রহণ করা হয়. 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 শিরোনাম "আব্রাহাম হ্যাম eats." হয় 144 00:11:07,460 --> 00:11:15,260 ঠিক আছে, এবং তারপর = re.search ফলে. 145 00:11:16,260 --> 00:11:22,020 এবং তারপর আমাদের অভিব্যক্তি H হতে পারে, এবং তারপর আমি বিন্দু M করবেন. 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 তাই AB + একটি কোনো নিম্নলিখিত বো 0 অধিক দ্বারা অনুসরণ করা হয়. 166 00:13:04,510 --> 00:13:08,000 এবি? একটি খ 0 বা 1 দ্বারা অনুসরণ. 167 00:13:09,190 --> 00:13:18,580 এবি {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 আমরা এইচএম তাকান চান তাই বলে, "আব্রাহাম লিঙ্কন হ্যাম স্যান্ডউইচ করে তোলে." 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 আমি H ও মি মধ্যে যেতে কিছু উল্লেখ করা হয়নি, কারণ এর জ. 191 00:15:36,140 --> 00:15:42,010 M ছিল শুধুমাত্র উদাহরণ - এটা M সঙ্গে সেখানে শুধুমাত্র উদাহরণ 192 00:15:42,010 --> 00:15:46,220 এবং H এর কোন সংখ্যা মাত্র স্ট্রিং M ছিল. 193 00:15:46,490 --> 00:15:51,850 তারপর আমি আবার চেষ্টা; আমি বলেন, "ঠিক আছে, আমাদের এখানে প্রকৃত বৃহত্তম দল পেতে যাক." 194 00:15:51,850 --> 00:15:59,670 এবং তারপর আমি জ করেনি. * মি, শুধু H ও মি মধ্যে অক্ষর কোন সংখ্যা ফেরৎ যাতে. 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 এটা অর্থগৃধ্নু হয় তা H উদ্ধার - এই সব অন্যান্য টেক্সট - মি, 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 এবং তারপর অন্য কিছু এইচটিএমএল, প্রোগ্রাম অনেক পরে ট্যাগ বন্ধ 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 এবং কোনো পূর্ণসংখ্যা জন্য উপমা পালাবার D দ্বারা - সংখ্যাসূচক অক্ষর. 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 যখন আব্রাহাম হ্যাম eats -. Hemming সময়" গ্রেট. 224 00:18:44,090 --> 00:18:47,330 সমস্ত. গ্রেট. এখন আমরা Ham, হ্যাম, এবং Hem পেতে. 225 00:18:48,510 --> 00:18:59,370 Hemming যদিও - তাকে humming সময় - Hem তাকে humming সময়. গ্রেট. 226 00:19:00,350 --> 00:19:03,250 একই জিনিস. 227 00:19:03,820 --> 00:19:09,180 এখন সমস্ত গুন্ গুন্ বা তার উপর অবচয় ছাড়া এখনও ঠিক, Ham Ham, এবং Hem ধার্য করা হয়. 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 ঠিক আছে - তাই - ঠিক আছে - অবস্থানের মধ্যে আপনি caret বা ডলার চিহ্ন ব্যবহার করতে পারেন 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 একটি সহজ সামান্য অ্যাপ্লিকেশন অনলাইন - এখানে কিছু অন্যান্য সরঞ্জাম, 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 আল্ট্রা Pico, এবং সেইসাথে শুধু 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 আপনি Google Code অনুসন্ধান বর্ণন সুতরাং যদি আপনি কোড জানতে পারেন 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]