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 Okay. ასევე, მისასალმებელია ყველას. ეს არის 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 სავარაუდოდ superhero - 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 ეს არის რეგულარული გამოხატვის Ruby. 21 00:01:25,550 --> 00:01:29,280 ეს არ არის საშინლად სხვადასხვა სხვადასხვა ენაზე. 22 00:01:29,690 --> 00:01:37,630 ჩვენ გვყავს მხოლოდ დახრილ ხაზებს უნდა დაიწყოს და მარკ რეგულარული გამოხატვის Ruby. 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,. Net და ასე შემდეგ. 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 ისინი შედარება, selections და გადაჯგუფების. 32 00:02:21,690 --> 00:02:27,970 ასე რომ, მესამე მაგალითი მოძიებაში ყველა ტელეფონის ნომრები დამთავრებული 54 დირექტორია. 33 00:02:27,970 --> 00:02:34,360 ასე რომ, სანამ დავით rips up 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 რეგულარული გამოსახულებების, ასე - მაგალითად - in dictionary.C ფაილი 39 00:02:59,740 --> 00:03:04,720 for მართლწერის შემოწმება პრობლემა კომპლექტი შეგიძლიათ არ გამოიყენება 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 ასე რომ, ეს გარკვეულწილად, როგორიცაა rudimentary რეგულარული გამოსახულება. 43 00:03:21,150 --> 00:03:26,060 და შეგიძლიათ რაიმე 45 პერსონაჟი, რომელიც შეესაბამება კანონპროექტის არსებობს 44 00:03:26,060 --> 00:03:28,080 და გააშუქა იმ up. 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 ასე რომ, არსებობს სპეციალური parsers მათთვის, ენებზე. 57 00:04:24,170 --> 00:04:30,060 თქვენ ასევე უნდა იყოს okay ერთად ვაჭრობის ღ და სიზუსტეს ხშირად. 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 თქვენ უნდა იყოს დარწმუნებული, რომ თქვენ okay მიღების ერთად რეგულარული გამოსახულება. 63 00:04:55,330 --> 00:04:57,920 თუ იცით ზუსტად რას ეძებენ ეს შეიძლება უფრო გრძნობა 64 00:04:57,920 --> 00:05:02,070 იმისათვის, რომ ამ დროს და წერა უფრო ეფექტური parser. 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 თუ თქვენ დაინტერესებული თეორიულად არსებობს საკმაოდ ბევრი იქ ქვეშ hood. 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 შემადგენლობაში რეგულარული გამოსახულებების - უბრალოდ ეძებს strings. 79 00:06:03,570 --> 00:06:09,110 Grep - ეს ბრძანება ხაზი ინსტრუმენტი - ერთი პირველი 80 00:06:09,110 --> 00:06:14,160 ძალიან პოპულარული ინსტრუმენტი, რომელიც მოიცავს რეგულარული გამოსახულებების in 1960. 81 00:06:14,160 --> 00:06:20,560 In '80s, Perl აშენდა - არის პროგრამირების ენა, რომელიც 82 00:06:20,560 --> 00:06:24,110 აერთიანებს რეგულარული გამოსახულებების ძალიან ორგანიზაციის. 83 00:06:24,550 --> 00:06:30,130 შემდეგ კი უფრო მეტ გვქონდა Perl თავსებადი რეგულარული გამოსახულებანი 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 სადაც პირველი ეროვნული რეგულარული გამოხატვის Day, 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 და ზუსტად იგივე გაგებით, რომ ჩვენ ვნახეთ ბუფერულ overflow თავდასხმები, 107 00:08:15,650 --> 00:08:21,610 თქვენ გაქვთ თავდასხმები, რომ მუშაობა მიერ მიღების რეკურსიული მარყუჟების, რომ 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 ანალოგიით, რათა oxen in ანგლო საქსური. 111 00:08:33,500 --> 00:08:40,169 >> Okay, ასე Python ბიბლიოთეკა ბევრ თქვენგანს აქ პირი აქვს Macs, 112 00:08:40,169 --> 00:08:43,860 ასე რომ თქვენ შეგიძლიათ რეალურად გაიყვანოს ეს ყველაფერი თქვენს ეკრანზე. 113 00:08:43,860 --> 00:08:47,480 რეგულარული გამოსახულებების შენდება შევიდა Python. 114 00:08:48,070 --> 00:08:53,020 ასე რომ, პითონი არის preloaded წლის Macs და ასევე ხელმისაწვდომია ბმულზე. 115 00:08:53,770 --> 00:08:57,350 ასე რომ, თუ თვალს შეგიძლიათ პაუზის და დარწმუნდით აქვს Python 116 00:08:58,080 --> 00:09:00,170 როგორც ჩვენ ითამაშოს გარშემო აქ. 117 00:09:00,780 --> 00:09:06,420 არსებობს სახელმძღვანელო შემოსული, ასე რომ, თუ მაშინ უნდა აკრიფოთ Python თქვენს კომპიუტერში 118 00:09:06,420 --> 00:09:10,500 ნახავთ, რომ ვერსიის წელს ტერმინალში. 119 00:09:11,070 --> 00:09:17,720 ასე რომ, იმ პირობით ბმული სახელმძღვანელო ვერსია 2 Python, ასევე მოტყუებას ფურცელი. 120 00:09:17,720 --> 00:09:23,100 არსებობს ვერსია 3 Python, მაგრამ თქვენი Mac სულაც არ 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 Okay, ასე რომ ზოგიერთი საფუძვლებს გამოყენებით რეგულარული გამოსახულებების in Python. 124 00:09:34,080 --> 00:09:42,650 >> ასე რომ, აქ მე ძალიან მარტივია გამოხატვის, ამიტომ მე Python იმპორტის რე 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 in, "აბრაამ ლინკოლნი და ლორი სენდვიჩები." 137 00:10:35,040 --> 00:10:37,150 ეს არის შედეგი, რომ ჯგუფში. 138 00:10:37,680 --> 00:10:43,130 კიდევ ერთი რამ, რომ ჩვენ შეგვიძლია გავაკეთოთ არის ჩვენი ადრე სიმები ტექსტი Python. 139 00:10:43,130 --> 00:10:46,220 ასე რომ, ვფიქრობ, წავა წინ და გაიყვანოს რომ აქ. 140 00:10:46,220 --> 00:10:49,210 Python იმპორტის ხელახლა. 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 და მაშინ ჩვენი გამოხატულება შეიძლება იყოს თ და შემდეგ გავაკეთებ dot მ. 146 00:11:22,020 --> 00:11:26,280 ასე dot მხოლოდ იღებს ნებისმიერი ხასიათის, რომ არ არის ახალი ხაზი, მათ შორის ნომრები, 147 00:11:26,280 --> 00:11:28,650 პროცენტული ნიშნები, რამე მსგავსი. 148 00:11:28,650 --> 00:11:38,030 შემდეგ კი ტექსტი - boom - და შემდეგ result.group--yeah. 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 და სიმებიანი შიგნით და რაც შეიძლება გამოიყურებოდეს გაქცევის sequences, 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 >> Okay, მოდით us შენარჩუნებას აპირებს. 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 ასე რომ, ბ + არის მოჰყვა რაიმე N მეტია 0 of ბ. 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 ნომრები curly აფრთხილებს თქვენ მიუთითებს სპექტრი 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 of "აბრაამ ლინკოლნი ხდის ლორი სენდვიჩები." 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 და ეს მხოლოდ ბრუნდება ham ამ შემთხვევაში. 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 გამოყენებით 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 შემდეგ მე შევეცადე კიდევ ერთხელ, მე ვუთხარი, "Okay, მოდით მიიღოს ფაქტობრივი უდიდეს ჯგუფს აქ." 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 ღია tag და შემდეგ უამრავი პერსონალის შუა 206 00:16:46,310 --> 00:16:49,820 და შემდეგ რამდენიმე სხვა HTML დაიხურა tag გაცილებით გვიან ჩართული, 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 ასე რომ, ჩვენ შეგვიძლია გამოვიყენოთ dot დაზუსტება ნებისმიერი ხასიათის გარდა ახალი ხაზი. 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 ჩვენ შეგვიძლია ასევე დააკონკრეტა ან ვარიანტები ან ან ბ. 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 All. დიდი. და ჩვენ მივიღებთ ლორი, ლორი და hem. 225 00:18:48,510 --> 00:18:59,370 მიუხედავად იმისა, რომ hemming - ხოლო humming მას - ხოლო humming to hem მას. დიდი. 226 00:19:00,350 --> 00:19:03,250 იგივე. 227 00:19:03,820 --> 00:19:09,180 ახლა ყველა დააბრუნებს ჯერ კიდევ ლორი, ლორი და hem გარეშე კრეფა up on hum ან მას. 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 Okay - ასე - ყველა უფლება - ში პოზიციების თქვენ ასევე შეგიძლიათ 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 >> Okay - ასე რომ, მოდით, ითამაშოს გარშემო ოდნავ ტექსტს. 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 oh, ვფიქრობ, ეს დაბრუნდა მას იმიტომ, რომ იქ ჩვენ შევხედავთ ძალა, რომ დღეს, აქ. 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 ასე რომ ჩვენ შეგვიძლია გავაკეთოთ fat და იქ ჩვენ არ მიიღოთ არაფერი, რადგან მას და მან 257 00:22:19,630 --> 00:22:22,870 არ ხდება ამ ფრაზა. 258 00:22:24,960 --> 00:22:30,410 დიდი. Okay - ასე რომ უკან კატა აქ. 259 00:22:30,410 --> 00:22:35,720 ასე რომ კომპლექსის ნიმუში არის hurting ტვინი. 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 Julius Caesar ან სახელი Julius Caesar სხვა ენებზე, 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 შეძლებს მიიღოს Julius Caesar. 277 00:23:50,860 --> 00:24:00,580 ასე რომ, არსებობს რამოდენიმე განსხვავებული შესრულება, რომ რამდენიმე სხვა ენებზე ისევე. 278 00:24:02,580 --> 00:24:08,420 აქ არის რამოდენიმე სხვა ინსტრუმენტი, Regex Pal - მოსახერხებელი პატარა ოთახი ონლაინ 279 00:24:08,420 --> 00:24:12,190 შესამოწმებლად, თუ თქვენი რეგულარული გამოსახულებების შედგება სწორად. 280 00:24:12,190 --> 00:24:18,500 ასევე არსებობს standalone ინსტრუმენტი, რომელიც შეგიძლიათ აწარმოებს თქვენს კომპიუტერში 281 00:24:18,500 --> 00:24:22,100 ისევე როგორც Ultra 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 in Unix, Perl აქვს ჩაშენებული, და C არის PCRE for 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, Java, Ruby, და ასე შემდეგ. 289 00:24:56,080 --> 00:24:58,980 >> Google კოდექსის ძებნა, ფაქტობრივად, აღსანიშნავია, რომ ეს არის ერთ ერთი 290 00:24:58,980 --> 00:25:05,720 შედარებით ნაკლები განაცხადების out არსებობს, რომელიც საშუალებას აძლევს საჯარო წვდომის 291 00:25:05,720 --> 00:25:07,800 მისი მონაცემთა ბაზის გამოყენებით რეგულარული გამოსახულებების შეყვანა. 292 00:25:07,800 --> 00:25:12,920 ასე რომ, თუ გამორჩა Google კოდექსის ძებნა ნახავთ კოდი 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 გსურთ შევხედოთ Python, grep, Perl - გსურთ მიიღოთ გარკვეული შთაგონების 300 00:25:45,560 --> 00:25:50,650 ან, თუ გნებავთ უფრო at თეორია აქ კარგი jumping off ადგილებში. 301 00:25:50,650 --> 00:25:53,870 დიდი მადლობა. 302 00:25:58,470 --> 00:25:59,910 [CS50.TV]