1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminar: Patrwm Paru â Datganiadau rheolaidd] 2 00:00:02,000 --> 00:00:04,000 [John Prifysgol Mussman-Harvard] 3 00:00:04,000 --> 00:00:07,220 [Mae hyn yn CS50.-CS50.TV] 4 00:00:07,780 --> 00:00:11,610 Iawn. Wel, croeso i bawb. Mae hyn yn CS50 2012. 5 00:00:11,780 --> 00:00:16,610 Fy enw i yw John, a byddaf yn siarad heddiw am ymadroddion rheolaidd. 6 00:00:16,610 --> 00:00:22,530 Mynegiadau rheolaidd yn bennaf yn offeryn, ond mae hefyd yn cael ei ddefnyddio weithiau 7 00:00:22,530 --> 00:00:28,650 mewn cod yn weithredol i hanfod, yn cyd-fynd patrymau a llinynnau. 8 00:00:28,650 --> 00:00:33,800 Felly dyma comic we o xkcd. 9 00:00:34,440 --> 00:00:42,370 Yn y comic hwn, mae yn ddirgelwch llofruddiaeth lle y llofrudd wedi 10 00:00:42,370 --> 00:00:47,860 rhywun ar wyliau dilyn, ac mae ganddynt y prif gymeriadau i 11 00:00:47,860 --> 00:00:52,500 chwilio drwy 200 megabeit o negeseuon e-bost chwilio am gyfeiriad. 12 00:00:52,500 --> 00:00:56,090 Ac maent ar fin rhoi'r gorau iddi pan fydd rhywun sy'n gwybod ymadroddion rheolaidd - 13 00:00:56,090 --> 00:01:00,550 yn ôl pob tebyg yn arwr - swoops i lawr ac yn ysgrifennu rhai cod 14 00:01:00,550 --> 00:01:02,970 ac yn datrys y dirgelwch llofruddiaeth. 15 00:01:02,970 --> 00:01:07,370 Felly, yn ôl pob tebyg a fydd hynny'n rhywbeth y byddwch yn cael eu grymuso i wneud 16 00:01:07,370 --> 00:01:09,370 ar ôl y seminar. 17 00:01:09,370 --> 00:01:12,250 Rydym yn unig yn mynd i roi cyflwyniad cryno i'r iaith 18 00:01:12,250 --> 00:01:16,770 ac yn rhoi i chi ddigon o fodd i fynd ar ôl mwy o adnoddau ar eich pen eich hun. 19 00:01:17,680 --> 00:01:21,700 >> Ymadroddion Felly reolaidd yn edrych yn y bôn fel hyn. 20 00:01:22,930 --> 00:01:25,550 Mae hyn yn fynegiant rheolaidd yn Ruby. 21 00:01:25,550 --> 00:01:29,280 Nid yw'n ofnadwy o wahanol ar draws ieithoedd. 22 00:01:29,690 --> 00:01:37,630 Mae gennym yn unig ar slaes i ddechrau ac i nodi'r mynegiant rheolaidd yn Ruby. 23 00:01:37,630 --> 00:01:42,880 Ac mae hyn yn fynegiant rheolaidd i chwilio amdano mewn cyfeiriad e-bost patrwm. 24 00:01:42,880 --> 00:01:49,160 Felly, rydym yn gweld yn y rhan gyntaf yn edrych ar gyfer unrhyw nod alffaniwmerig. 25 00:01:50,500 --> 00:01:54,880 Mae hynny oherwydd bod yn aml yn cael cyfeiriadau e-bost at ddechrau gyda chymeriad yr wyddor. 26 00:01:55,460 --> 00:01:59,330 Ac yna unrhyw gymeriad arbennig a ddilynir gan y symbol @. 27 00:01:59,330 --> 00:02:03,260 Ac yna yr un peth am enw parth. 28 00:02:03,260 --> 00:02:10,030 Ac yna rhwng 2 a 4 cymeriadau i chwilio am y. Com,. Net, ac yn y blaen. 29 00:02:10,850 --> 00:02:13,200 Felly, mae hynny'n enghraifft arall o fynegiant rheolaidd. 30 00:02:13,200 --> 00:02:17,270 Felly ymadroddion rheolaidd yn brotocolau ar gyfer dod o hyd i batrymau mewn testun. 31 00:02:17,270 --> 00:02:21,130 Maent yn gwneud cymariaethau, dewisiadau, ac yn eu lle. 32 00:02:21,690 --> 00:02:27,970 Felly drydedd enghraifft yn dod o hyd i holl rifau ffôn sy'n dod i ben mewn 54 mewn cyfeiriadur. 33 00:02:27,970 --> 00:02:34,360 Felly, cyn i David rips hyd y cyfeiriadur CS50 gallem chwilio am 34 00:02:34,360 --> 00:02:40,450 patrwm lle mae gennym cromfachau yna 3 rhif yna ben cromfachau, 35 00:02:40,450 --> 00:02:44,070 3 arall rhifau, llinell doriad, rhifau 2, ac yna 54. 36 00:02:44,070 --> 00:02:48,310 A byddai hynny'n hanfod sut yr ydym yn dod o hyd i mynegiad rheolaidd i chwilio am hynny. 37 00:02:49,150 --> 00:02:52,960 >> Felly mae - rydym wedi gwneud rhai pethau yn CS50 sy'n ychydig yn debyg i 38 00:02:52,960 --> 00:02:59,740 mynegiadau rheolaidd, felly - er enghraifft - yn y ffeil dictionary.C 39 00:02:59,740 --> 00:03:04,720 ar gyfer y broblem gwirio sillafu set efallai y byddwch wedi defnyddio fscanf 40 00:03:04,720 --> 00:03:07,930 i ddarllen mewn gair o'r geiriadur. 41 00:03:07,930 --> 00:03:16,240 A gallwch weld canran 45 oed yn chwilio am gyfres o 45 o gymeriadau. 42 00:03:16,240 --> 00:03:20,020 Felly mae'n braidd fel mynegiant rheolaidd elfennol. 43 00:03:21,150 --> 00:03:26,060 A gallwch gael unrhyw 45 cymeriadau sy'n cyd-fynd y bil i mewn 'na 44 00:03:26,060 --> 00:03:28,080 a chodi rhai hyd. 45 00:03:28,080 --> 00:03:33,480 Ac yna yr ail enghraifft, yn y broblem fwyaf diweddar rhaglennu ar y we 46 00:03:33,480 --> 00:03:40,760 a osodwyd yn y cod distro ar gyfer php rydym yn ei wneud mewn gwirionedd yn cael mynegiant rheolaidd syml. 47 00:03:40,760 --> 00:03:46,790 Ac mae hyn yn un yn unig dim ond edrych i wirio a yw'r dudalen we sy'n cael ei basio yn 48 00:03:46,790 --> 00:03:51,940 yn cyd-fynd naill ai mewngofnodi neu allgofnodi gofrestru. PHP. 49 00:03:52,220 --> 00:03:57,910 Ac yna dychwelyd gwir neu gau yn seiliedig ar yr cyfateb mynegiad rheolaidd. 50 00:03:59,400 --> 00:04:01,740 >> Felly, pan rydych chi'n defnyddio mynegiant rheolaidd? 51 00:04:01,740 --> 00:04:04,820 Pam wyt ti yma heddiw? 52 00:04:05,330 --> 00:04:08,480 Felly, nad ydych am i ddefnyddio mynegiant rheolaidd pan mae rhywbeth sy'n 53 00:04:08,480 --> 00:04:11,640 gwneud y gwaith ar eich rhan hyd yn oed yn haws. 54 00:04:11,640 --> 00:04:15,510 Felly, XML a HTML mewn gwirionedd yn eithaf anodd 55 00:04:15,510 --> 00:04:18,480 i ysgrifennu ymadroddion rheolaidd gan y byddwn yn gweld mewn ychydig. 56 00:04:19,110 --> 00:04:23,280 Felly mae parsers penodol ar gyfer yr ieithoedd hynny. 57 00:04:24,170 --> 00:04:30,060 Mae angen i chi hefyd fod yn iawn gyda'r cyfaddawdau a chywirdeb yn aml. 58 00:04:30,060 --> 00:04:36,220 Os ydych yn ceisio - felly rydym yn gweld mynegiant rheolaidd ar gyfer cyfeiriad e-bost, 59 00:04:37,370 --> 00:04:42,590 ond yn dweud eich bod am gael cyfeiriad e-bost penodol ac yn raddol y 60 00:04:42,590 --> 00:04:48,570 Gallai mynegiad rheolaidd yn dod yn fwy cymhleth wrth daeth yn fwy manwl gywir. 61 00:04:49,580 --> 00:04:52,260 Felly, byddai hynny'n un fasnach i ffwrdd. 62 00:04:52,260 --> 00:04:55,330 Rhaid i chi fod yn siŵr eich bod yn gwneud iawn gyda'r mynegiant rheolaidd. 63 00:04:55,330 --> 00:04:57,920 Os ydych yn gwybod yn union beth rydych yn chwilio am y gallai gwneud mwy o synnwyr 64 00:04:57,920 --> 00:05:02,070 i roi yn yr amser ac yn ysgrifennu parser yn fwy effeithiol. 65 00:05:02,070 --> 00:05:06,980 Ac yn olaf mae yna fater hanesyddol gyda'r rheoleidd 66 00:05:06,980 --> 00:05:08,940 o ymadroddion ac ieithoedd. 67 00:05:08,940 --> 00:05:12,960 Mynegiadau rheolaidd mewn gwirionedd yn llawer mwy pwerus na 68 00:05:12,960 --> 00:05:16,450 mynegiadau rheolaidd fesul dweud mewn ystyr ffurfiol. 69 00:05:17,130 --> 00:05:20,150 >> Felly, nid wyf am fynd yn rhy bell i mewn i'r theori ffurfiol, 70 00:05:20,150 --> 00:05:24,000 ond mae'r rhan fwyaf o ieithoedd nad ydym cod mewn gwirionedd yn rheolaidd. 71 00:05:24,000 --> 00:05:29,110 A dyma pam nad mynegiadau rheolaidd yn cael eu hystyried bob un sy'n ddiogel weithiau. 72 00:05:29,670 --> 00:05:33,150 Felly, yn y bôn mae hierarchaeth Chomsky ar gyfer ieithoedd, 73 00:05:33,150 --> 00:05:38,400 ac ymadroddion rheolaidd yn cael eu creu gan ddefnyddio undeb, Concatenation, 74 00:05:38,400 --> 00:05:41,810 a gweithredu seren Kleene y byddwn yn gweld mewn ychydig funudau. 75 00:05:43,130 --> 00:05:48,860 Os oes gennych ddiddordeb mewn theori mae cryn dipyn yn mynd ymlaen yno o dan y cwfl. 76 00:05:50,360 --> 00:05:55,880 >> Felly, mae hanes byr - dim ond ar gyfer y cyd-destun yma - setiau rheolaidd yn dod i fyny 77 00:05:55,880 --> 00:05:59,580 yn y 1950au, ac yna cawsom golygyddion syml sy'n 78 00:05:59,580 --> 00:06:03,300 ymgorffori mynegiadau rheolaidd - dim ond chwilio am llinynnau. 79 00:06:03,570 --> 00:06:09,110 Grep - sef offeryn llinell orchymyn - oedd un o'r rhai cyntaf 80 00:06:09,110 --> 00:06:14,160 offer boblogaidd iawn a oedd yn cynnwys ymadroddion rheolaidd yn y 1960au. 81 00:06:14,160 --> 00:06:20,560 Yn y 80au, Perl ei adeiladu - yn iaith raglennu sy'n 82 00:06:20,560 --> 00:06:24,110 cynnwys ymadroddion rheolaidd yn amlwg iawn. 83 00:06:24,550 --> 00:06:30,130 Ac yna yn fwy diweddar, rydym wedi cael Perl mynegiad rheolaidd gydnaws 84 00:06:30,130 --> 00:06:35,870 protocolau yn y bôn mewn ieithoedd eraill sy'n defnyddio llawer o'r un gystrawen. 85 00:06:36,630 --> 00:06:39,840 Wrth gwrs, mae'r digwyddiad pwysicaf oedd yn 2008 86 00:06:39,840 --> 00:06:43,040 lle'r oedd y Diwrnod Mynegiadau rheolaidd Cenedlaethol cyntaf, 87 00:06:43,040 --> 00:06:47,350 yr wyf yn credu yw Mehefin 1 os ydych am i ddathlu hynny. 88 00:06:48,430 --> 00:06:50,840 >> Unwaith eto, dim ond ychydig yn fwy theori yma. 89 00:06:52,180 --> 00:06:55,320 Felly, mae yna gwpl o ffyrdd gwahanol o adeiladu ymadroddion rheolaidd. 90 00:06:55,950 --> 00:07:02,050 Un ffordd syml yw adeiladu ymadrodd yr ydych yn mynd i 91 00:07:02,050 --> 00:07:07,500 rhedeg ar y llinyn dehongli - yn y bôn adeiladu mini-raglen bach sy'n 92 00:07:07,500 --> 00:07:11,870 yn dadansoddi darnau o linyn a gweld, "O, mae hyn yn cyd-fynd â'r mynegiad rheolaidd neu beidio?" 93 00:07:12,250 --> 00:07:14,250 Ac yna rhedeg hynny. 94 00:07:14,250 --> 00:07:17,300 Felly, os oes gennych mynegiant bach iawn yn rheolaidd, mae hyn yn ôl pob tebyg 95 00:07:17,300 --> 00:07:19,380 y ffordd fwyaf effeithiol i wneud hynny. 96 00:07:20,090 --> 00:07:25,420 Ac yna os ydych yn - dewis arall yw cadw ail-greu 97 00:07:25,420 --> 00:07:30,260 mynegiant wrth i chi fynd, a dyna y posibilrwydd efelychu. 98 00:07:30,440 --> 00:07:37,690 Ac mae'r rhain ymdrechion cynnar yn algorithmau mynegiad rheolaidd yn 99 00:07:37,690 --> 00:07:44,330 gymharol syml ac yn gymharol gyflym, ond nid oedd yn cael llawer o hyblygrwydd. 100 00:07:44,330 --> 00:07:47,500 Felly, er mwyn gwneud hyd yn oed rhai o'r pethau yr ydym yn mynd i edrych ar 101 00:07:47,500 --> 00:07:52,860 heddiw rydym wedi gorfod gwneud mynegiad rheolaidd yn fwy cymhleth 102 00:07:52,860 --> 00:07:56,650 gweithrediadau a allai fod yn llawer arafach, felly mae hynny'n rhywbeth i'w gadw mewn cof 103 00:07:57,510 --> 00:08:02,920 Mae hefyd yn gwadu ymadroddion rheolaidd o amrywiaeth ymosodiad 104 00:08:02,920 --> 00:08:08,330 sy'n manteisio ar y potensial ar gyfer y gweithrediadau newydd o 105 00:08:08,330 --> 00:08:10,930 mynegiadau rheolaidd i fod yn gymhleth iawn. 106 00:08:11,570 --> 00:08:15,650 Ac yn yr un ystyr a welsom yn ymosodiadau gorlif byffer, 107 00:08:15,650 --> 00:08:21,610 rydych yn cael pyliau sy'n gweithio drwy wneud dolenni recursive bod 108 00:08:21,610 --> 00:08:24,400 oresgyn y gallu cof. 109 00:08:24,780 --> 00:08:29,540 A gyda llaw Regexen yn un o lluosog swyddogol mynegiad rheolaidd 110 00:08:29,540 --> 00:08:32,890 drwy gyfatebiaeth i ychen yn y Eingl-Sacsonaidd. 111 00:08:33,500 --> 00:08:40,169 >> Iawn, felly mae'r Llyfrgell Python llawer ohonoch yma yn berson Macs, 112 00:08:40,169 --> 00:08:43,860 er mwyn i chi mewn gwirionedd yn tynnu hyn i fyny ar eich sgrin. 113 00:08:43,860 --> 00:08:47,480 Mynegiadau rheolaidd yn cael eu hadeiladu i mewn i Python. 114 00:08:48,070 --> 00:08:53,020 Ac felly Python yn rhaglwythedig ar Macs ac hefyd ar gael ar-lein ar y ddolen hon. 115 00:08:53,770 --> 00:08:57,350 Felly, os ydych yn gwylio y gallwch oedi ac yn gwneud yn siŵr bod gennych Python 116 00:08:58,080 --> 00:09:00,170 wrth i ni chwarae o gwmpas yma. 117 00:09:00,780 --> 00:09:06,420 Mae llawlyfr ar-lein, felly os ydych yn jyst deipio Python i mewn i'ch cyfrifiadur 118 00:09:06,420 --> 00:09:10,500 byddwch yn gweld bod y fersiwn yn dod i fyny yn y derfynfa. 119 00:09:11,070 --> 00:09:17,720 Felly yr wyf yn darparu dolen i'r llawlyfr ar gyfer Fersiwn 2 o Python, yn ogystal fel taflen twyllo. 120 00:09:17,720 --> 00:09:23,100 Mae Fersiwn 3 o Python, ond nid yw eich Mac yn reidrwydd 121 00:09:23,100 --> 00:09:25,130 ddaw yn sgil hynny rhaglwythedig. 122 00:09:25,130 --> 00:09:27,360 Felly nid ofnadwy wahanol. 123 00:09:27,360 --> 00:09:33,270 Iawn, felly mae rhai pethau sylfaenol o ddefnyddio ymadroddion rheolaidd yn Python. 124 00:09:34,080 --> 00:09:42,650 >> Felly dyma Roeddwn i'n arfer yn fynegiant syml iawn, felly wnes i ail mewnforio Python 125 00:09:43,750 --> 00:09:47,070 ac yna cymerodd y canlyniad re.search. 126 00:09:47,070 --> 00:09:49,910 Ac mae'r chwiliad yn cymryd 2 dadleuon. 127 00:09:49,910 --> 00:09:56,040 Y cyntaf yw'r mynegiant rheolaidd, ac mae'r ail yn y testun 128 00:09:56,040 --> 00:09:58,290 neu linyn rydych am ei ddadansoddi. 129 00:09:58,290 --> 00:10:01,210 Ac yna yr wyf yn argraffu allan y result.group. 130 00:10:01,580 --> 00:10:05,860 Felly mae'r rhain yn y 2 swyddogaeth sylfaenol yr ydym yn mynd i weld heddiw 131 00:10:06,790 --> 00:10:10,170 mewn dysgu am ymadroddion rheolaidd. 132 00:10:10,170 --> 00:10:12,880 Felly, dim ond torri i lawr y mynegiad rheolaidd yma 133 00:10:12,880 --> 00:10:21,770 h ac yna \ w ac yna m felly \ w dim ond yn derbyn unrhyw gymeriad yn nhrefn yr wyddor mewn 'na. 134 00:10:21,850 --> 00:10:26,820 Felly dyma ni yn chwilio am "f" ac yna cymeriad arall yn nhrefn yr wyddor 135 00:10:26,820 --> 00:10:30,060 ac yna m, felly dyma y byddai cyd-fynd ham 136 00:10:30,060 --> 00:10:34,480 i mewn, "Abraham Lincoln a ham brechdanau." 137 00:10:35,040 --> 00:10:37,150 Mae hyn yn ganlyniad y grŵp hwnnw. 138 00:10:37,680 --> 00:10:43,130 Beth arall y gallwn ei wneud yw defnyddio ein llinynnau cyn testun yn Python. 139 00:10:43,130 --> 00:10:46,220 Felly, yr wyf yn dyfalu byddaf yn mynd yn ei flaen a thynnu bod hyd yma. 140 00:10:46,220 --> 00:10:49,210 Ail mewnforio Python. 141 00:10:50,070 --> 00:10:54,000 Ac os wyf yn gwneud yr un peth - gadewch i ni yn dweud testun, 142 00:10:55,390 --> 00:11:00,800 "Abraham," gadewch i ni chwyddo i mewn - dyna ni. 143 00:11:01,610 --> 00:11:06,430 Testun yw, "Abraham bwyta ham." 144 00:11:07,460 --> 00:11:15,260 Iawn, ac yna yn arwain = re.search. 145 00:11:16,260 --> 00:11:22,020 Ac yna gall ein mynegiant fod yn h, ac yna byddaf yn gwneud dot m. 146 00:11:22,020 --> 00:11:26,280 Felly dot yn unig yn cymryd unrhyw gymeriad nad yw'n llinell newydd gan gynnwys rhifau, 147 00:11:26,280 --> 00:11:28,650 arwyddion canran, unrhyw beth fel 'na. 148 00:11:28,650 --> 00:11:38,030 Ac yna destun - ffyniant - ac yna result.group--yeah. 149 00:11:38,030 --> 00:11:41,820 Felly dyna yn unig sut i weithredu swyddogaethau sylfaenol yma. 150 00:11:42,300 --> 00:11:55,110 Pe bai gennym cylch destun hynny - fod y testun crazy - cynnwys dweud llawer o slaes ôl 151 00:11:55,110 --> 00:12:01,180 a llinynnau y tu mewn a phethau a allai edrych fel dilyniannau dianc, 152 00:12:01,180 --> 00:12:08,480 Yna, yn ôl pob tebyg am ddefnyddio'r mewnbwn testun crai i wneud yn siŵr bod ei dderbyn. 153 00:12:08,480 --> 00:12:14,120 A bod ddim ond yn edrych fel 'na. 154 00:12:14,120 --> 00:12:17,810 Felly, os ydym yn chwilio am bob un ohonynt i mewn 'na ni ddylem dod o hyd i unrhyw beth. 155 00:12:19,070 --> 00:12:21,680 Ond dyna sut y byddech yn gweithredu, yn union cyn y gyfres o 156 00:12:21,680 --> 00:12:24,990 y mynegiad rheolaidd i chi roi'r r llythyr. 157 00:12:26,150 --> 00:12:30,260 >> Iawn, felly gadewch i ni gadw i fynd. 158 00:12:30,260 --> 00:12:33,730 Mae pob hawl - felly, gadewch inni edrych ar batrymau ailadroddus gwpl yma. 159 00:12:34,750 --> 00:12:39,150 Felly, un peth yr ydych am ei wneud yw ailadrodd pethau 160 00:12:40,040 --> 00:12:42,480 gan eich bod yn chwilio drwy destun. 161 00:12:42,480 --> 00:12:48,300 Felly, er mwyn gwneud yn dilyn gan unrhyw nifer o b - chi ei wneud ab *. 162 00:12:48,630 --> 00:12:51,620 Ac yna mae cyfres o reolau eraill hefyd. 163 00:12:51,620 --> 00:12:54,380 A allwch chi edrych pob un o'r rhain i fyny, 'n annhymerus' jyst yn rhedeg drwy rai o'r 164 00:12:54,380 --> 00:12:57,630 defnyddio rhai mwyaf cyffredin. 165 00:12:57,630 --> 00:13:03,920 Felly, ab + yn dilyn gan unrhyw N fwy na 0 o b. 166 00:13:04,510 --> 00:13:08,000 ab? yn dilyn gan 0 neu 1 b. 167 00:13:09,190 --> 00:13:18,580 ab {N} yn dilyn gan N o b, ac yna yn y blaen. 168 00:13:18,580 --> 00:13:22,820 Os oes gennych rifau 2 yn y braces cyrliog ydych yn pennu ystod 169 00:13:23,300 --> 00:13:25,440 a all fod yn cyfateb o bosibl. 170 00:13:26,390 --> 00:13:30,420 Felly byddwn yn edrych yn fwy ar batrymau ailadroddus chwpl mewn munud. 171 00:13:31,960 --> 00:13:42,300 Felly 2 bethau i'w cadw mewn cof wrth ddefnyddio'r offer cyfateb patrwm yma. 172 00:13:42,300 --> 00:13:52,120 Felly, yn dweud rydym am edrych ar y hm o, "Abraham Lincoln yn gwneud brechdanau ham." 173 00:13:52,120 --> 00:13:55,230 Felly, yr wyf wedi newid enw Abraham Lincoln i Abraham. 174 00:13:55,230 --> 00:14:00,290 Ac yn awr rydym yn chwilio am yr hyn yn cael ei ddychwelyd gan y swyddogaeth chwilio, 175 00:14:00,290 --> 00:14:03,270 a dim ond dychwelyd ham yn yr achos hwn. 176 00:14:03,620 --> 00:14:08,080 Ac mae'n gwneud hynny oherwydd bod chwilio yn unig yn naturiol yn cymryd y rhan fwyaf o ciw chwith. 177 00:14:08,080 --> 00:14:12,130 A bydd yr holl ymadroddion rheolaidd oni bai eich bod yn nodi fel arall yn gwneud hynny. 178 00:14:12,830 --> 00:14:18,880 Os ydym yn awyddus i ddod o hyd i gyd yno yn swyddogaeth am hynny - dod o hyd i gyd. 179 00:14:18,880 --> 00:14:35,100 Fel y gallai dim ond yn edrych fel pob = re.findall ('h.m', testun) 180 00:14:35,100 --> 00:14:44,540 ac yna all.group (). 181 00:14:44,540 --> 00:14:51,040 Mae'r holl cynhyrchu yn ham a ham, yn yr achos hwn yn y llinynnau yn Abraham mhob ham. 182 00:14:51,610 --> 00:14:55,110 Felly mae hynny'n opsiwn arall. 183 00:14:56,250 --> 00:15:06,940 >> Fawr. Y peth arall i gadw mewn cof yw bod mynegiadau rheolaidd yn cymryd y mwyaf yn reddfol. 184 00:15:06,940 --> 00:15:09,520 Gadewch inni edrych ar yr enghraifft hon. 185 00:15:10,200 --> 00:15:16,070 Rydym yn gwneud y rhan fwyaf chwilio chwith yma, ac yna rwyf ceisio chwiliad mwy o faint 186 00:15:16,070 --> 00:15:18,800 defnyddio'r gweithredwr seren Kleene. 187 00:15:18,800 --> 00:15:24,180 Felly, ar gyfer, "Abraham Lincoln yn gwneud brechdanau ham," a dim ond mynd yn ôl 188 00:15:24,180 --> 00:15:26,280 m o ganlyniad. 189 00:15:26,280 --> 00:15:31,670 Y rheswm am hynny camgymeriad oedd y gallwn fod wedi cymryd unrhyw nifer o 190 00:15:31,670 --> 00:15:36,140 h Mae hyn oherwydd nad oeddwn yn benodol am ddim i fynd i mewn rhwng h a m. 191 00:15:36,140 --> 00:15:42,010 Yr unig enghraifft, nad oedd m - yr unig enghreifftiau yno gyda m ynddo 192 00:15:42,010 --> 00:15:46,220 ac unrhyw nifer o h oedd dim ond y m llinyn. 193 00:15:46,490 --> 00:15:51,850 Yna mi rhoi cynnig arno eto, dywedais, "Iawn, gadewch i ni gael y grŵp mwyaf gwir yma." 194 00:15:51,850 --> 00:15:59,670 Ac yna i ddim yn h. * M, er mai dim ond yn dychwelyd unrhyw nifer o gymeriadau rhwng h a m. 195 00:16:00,280 --> 00:16:02,950 Ac os ydych yn dechrau allan a meddwl, "O, iawn, yn dda y bydd 196 00:16:02,950 --> 00:16:11,560 mynd i mi ham, "mae'n mewn gwirionedd yn cymryd popeth o'r h yn Abraham Lincoln 197 00:16:11,560 --> 00:16:13,690 yr holl ffordd i fyny at ddiwedd ham. 198 00:16:14,040 --> 00:16:18,110 Mae'n barus, mae'n gweld h - yr holl destun arall yma - m, 199 00:16:18,110 --> 00:16:21,280 a dyna'r hyn y mae'n ei gymryd i mewn 200 00:16:22,060 --> 00:16:27,480 Mae hyn yn arbennig o egregious - mae hyn yn nodwedd gallwn hefyd 201 00:16:27,480 --> 00:16:30,670 pennu at na fydd yn farus gan ddefnyddio swyddogaethau eraill. 202 00:16:31,480 --> 00:16:34,490 Ond mae hyn yn rhywbeth y mae'n rhaid i ni gadw mewn cof yn arbennig 203 00:16:34,490 --> 00:16:38,720 wrth edrych ar destun HTML, a dyna un rheswm bod 204 00:16:38,720 --> 00:16:41,500 mynegiadau rheolaidd yn anodd i HTML. 205 00:16:42,460 --> 00:16:46,310 Oherwydd os oes gennych tag agored HTML ac yna llawer o bethau yn y canol 206 00:16:46,310 --> 00:16:49,820 ac yna mae rhai HTML eraill ar gau tag llawer yn ddiweddarach yn y rhaglen, 207 00:16:49,820 --> 00:16:55,420 yr ydych newydd ei fwyta i fyny choelbren chan eich cod HTML o bosibl trwy gamgymeriad. 208 00:16:56,200 --> 00:17:01,840 >> Mae pob hawl - gymeriadau felly yn fwy arbennig, fel llawer o ieithoedd eraill, 209 00:17:01,840 --> 00:17:04,780 rydym yn dianc rhag defnyddio'r slaes. 210 00:17:04,780 --> 00:17:10,329 Felly, gallwn ddefnyddio'r dot i nodi unrhyw gymeriad ac eithrio ar gyfer llinell newydd. 211 00:17:10,329 --> 00:17:14,550 Gallwn ddefnyddio'r dianc w i nodi unrhyw gymeriad yr wyddor. 212 00:17:14,550 --> 00:17:20,329 A thrwy gyfatebiaeth dianc d ar gyfer unrhyw gyfanrif - cymeriad rhifol. 213 00:17:20,630 --> 00:17:27,440 Gallwn pennu - gallwn ddefnyddio cromfachau i nodi ymadroddion cysylltiedig. 214 00:17:27,440 --> 00:17:30,970 Felly, byddai hyn yn derbyn a, b, neu c. 215 00:17:31,320 --> 00:17:37,000 A gallwn hefyd bennu neu opsiynau ar gyfer naill ai neu b. 216 00:17:37,000 --> 00:17:41,110 Er enghraifft - os ydym yn chwilio am bosibiliadau lluosog 217 00:17:41,110 --> 00:17:44,940 mewn cromfachau gallem eu defnyddio i'r gweithredwr neu fel yn - 218 00:17:44,940 --> 00:17:52,480 felly gadewch i ni fynd yn ôl at yr enghraifft yma. 219 00:17:53,000 --> 00:17:59,790 Ac yn awr gadewch i ni gymryd - gadewch i ni fynd yn ôl at yr enghraifft yma, ac yna 220 00:17:59,790 --> 00:18:12,290 cymryd ae - felly dylai hyn ddychwelyd - mae'n debyg mae hyn yn dal i Abraham. 221 00:18:12,290 --> 00:18:17,410 Felly, mae hyn - os ydym yn ei wneud i gyd - gwych. 222 00:18:17,410 --> 00:18:22,700 Felly, gadewch i ni ddiweddaru'r testun yma. 223 00:18:22,700 --> 00:18:34,690 "Abraham bwyta ham wrth ei Hemming -. Tra Hemming" Fawr. 224 00:18:44,090 --> 00:18:47,330 Gyfan. Fawr. Nawr rydym yn cael ham, ham, a hem. 225 00:18:48,510 --> 00:18:59,370 Er bod Hemming - er hymian iddo - er hymian i hem ef. Fawr. 226 00:19:00,350 --> 00:19:03,250 Un peth. 227 00:19:03,820 --> 00:19:09,180 Erbyn hyn i gyd yn dychwelyd o hyd yn unig ham, ham, a hem heb bigo i fyny ar y Hum neu'r ef. 228 00:19:09,940 --> 00:19:22,600 Great - felly beth os oeddem am edrych ar naill ai hynny - fel y gallem hefyd yn gwneud 229 00:19:23,510 --> 00:19:33,810 iddo ef neu - byddwn yn dod yn ôl at hynny. 230 00:19:34,810 --> 00:19:45,760 Iawn - felly - yn iawn - mewn swyddi gallwch hefyd ddefnyddio'r caret neu'r arwydd doler 231 00:19:45,760 --> 00:19:49,350 i nodi eich bod yn chwilio am rywbeth ar ddechrau neu ddiwedd y llinyn. 232 00:19:50,260 --> 00:19:52,260 Neu dechrau neu ddiwedd gair. 233 00:19:52,400 --> 00:19:54,470 Mae hynny'n un ffordd o ddefnyddio hynny. 234 00:19:55,630 --> 00:20:01,160 >> Iawn - felly gadewch i ni chwarae o gwmpas gyda bloc ychydig yn fwy o destun. 235 00:20:03,950 --> 00:20:08,310 Gadewch i ni ddweud rhes hyn yma - y datganiad yma. 236 00:20:08,310 --> 00:20:11,360 Mae'r pŵer o fynegiant rheolaidd yw eu bod yn gallu nodi patrymau 237 00:20:11,360 --> 00:20:13,390 Nid yw sefydlog cymeriadau yn unig. 238 00:20:14,900 --> 00:20:18,790 Gadewch i ni wneud - gadewch inni ddweud bloc hwn. 239 00:20:22,400 --> 00:20:27,110 Yna, byddwn yn darllen yr holl o hynny mewn 240 00:20:28,890 --> 00:20:50,820 Ac yna gael - gadewch i ni wneud yr holl =, felly beth yw rhai pethau y gallem chwilio i mewn yma yn broffidiol? 241 00:20:50,820 --> 00:20:54,070 Gallem edrych am y glust mynegiant. 242 00:20:55,050 --> 00:21:01,520 Ddim yn ddiddorol iawn. Beth am hynny? Gawn ni weld beth fydd yn digwydd. 243 00:21:03,710 --> 00:21:05,710 Rhoddais ei fod yn broblem. 244 00:21:06,380 --> 00:21:10,750 Felly unrhyw nifer o bethau cyn ei ail a phob. 245 00:21:10,750 --> 00:21:15,630 Felly dylai bod yn dychwelyd popeth o'r dechrau hyd i bob ail efallai cwpl o weithiau. 246 00:21:18,800 --> 00:21:21,970 Ac yna dyma gennym y pŵer mynegiadau rheolaidd yw eu bod yn 247 00:21:21,970 --> 00:21:24,900 Gall nodi patrymau nid dim ond cymeriadau yma. 248 00:21:24,900 --> 00:21:28,510 Felly, yr holl ffordd i fyny at ail terfynol, mae'n dechrau gyda'r rhan fwyaf o chwith ac roedd yn farus. 249 00:21:30,710 --> 00:21:32,710 Gadewch inni weld - beth arall y gallem edrych am. 250 00:21:32,710 --> 00:21:39,860 Amcana un peth os oedd diddordeb mewn chwilio am y rhagenwau wrthych ei bod ac efe, 251 00:21:39,860 --> 00:21:44,600 gallech chwilio am s yn gyfartal i 0 neu 1 252 00:21:44,600 --> 00:21:49,710 ac mae'r ymadrodd ef, ac nad oes na thebyg yn mynd i ddychwelyd - 253 00:21:49,710 --> 00:21:58,020 oh, yr wyf yn dyfalu ei ddychwelyd iddo oherwydd bod yr ydym yn edrych ar y pŵer, y diwrnod hwnnw, yma yn cael eu. 254 00:22:00,590 --> 00:22:06,270 Gadewch inni roi cynnig ar nodi bod hyn wedi dod ar ddechrau rhywbeth. 255 00:22:06,640 --> 00:22:09,530 Gadewch inni weld os yw yn disgyn i ffwrdd. 256 00:22:09,530 --> 00:22:19,630 Felly, gallwn wneud braster, ac yno nid ydym yn cael unrhyw beth am ei ac mae'n 257 00:22:19,630 --> 00:22:22,870 nid ydynt yn digwydd yn yr ymadrodd hwn. 258 00:22:24,960 --> 00:22:30,410 Fawr. Iawn - felly yn ôl at y gath yma. 259 00:22:30,410 --> 00:22:35,720 Batrymau mor gymhleth yn brifo yr ymennydd. 260 00:22:35,720 --> 00:22:40,500 Felly, dyna pam yr ydym yn defnyddio mynegiadau rheolaidd i osgoi materion hyn. 261 00:22:40,820 --> 00:22:43,520 >> Felly, dyma rai dulliau defnyddiol eraill y gallwch chi chwarae o gwmpas gyda. 262 00:22:43,520 --> 00:22:50,290 Rydym yn edrych ar chwilio heddiw, ond gallwch hefyd ddefnyddio gêm, hollti, findall, a grwpiau. 263 00:22:50,290 --> 00:22:53,970 Pethau oer Felly eraill y gallwch ei wneud gyda mynegiadau rheolaidd eithr yn unig yn 264 00:22:53,970 --> 00:22:58,870 edrych am batrymau yn cymryd patrwm a chynnal holl gemau - 265 00:22:58,870 --> 00:23:02,530 ei newidynnau - ac yna defnyddio rhai yn eich cod yn nes ymlaen. 266 00:23:02,850 --> 00:23:05,980 Gall hynny fod yn eithaf defnyddiol. Gallai pethau eraill yn cael eu cyfrif. 267 00:23:05,980 --> 00:23:11,720 Felly, gallwn gyfrif y nifer o achosion o batrwm mynegiant rheolaidd, 268 00:23:11,720 --> 00:23:13,960 a dyna beth y gallwn ei ddefnyddio ar gyfer grwpiau. 269 00:23:13,960 --> 00:23:17,550 A dulliau eraill yn ogystal hefyd yn bosibl. 270 00:23:18,040 --> 00:23:22,980 Felly, Fi jyst eisiau siarad ychydig yn fwy am ffyrdd eraill y gallwch eu defnyddio mynegiadau rheolaidd. 271 00:23:22,980 --> 00:23:29,100 >> Felly, un cais yn fwy datblygedig yn cyfateb fuzzy. 272 00:23:29,100 --> 00:23:33,450 Felly, os ydych yn chwilio am destun ar gyfer yr ymadrodd, Iŵl Cesar, 273 00:23:33,450 --> 00:23:37,740 ac yn gweld naill ai Gaius Julius Caesar neu enw Julius Caesar mewn ieithoedd eraill, 274 00:23:37,740 --> 00:23:44,400 yna efallai y byddwch hefyd yn dymuno neilltuo rhywfaint o bwysau i'r gwerthoedd hynny. 275 00:23:44,400 --> 00:23:48,930 Ac os yw'n ddigon agos - os yw'n croesi trothwy penodol - yna rydych am 276 00:23:48,930 --> 00:23:50,860 i allu derbyn Julius Caesar. 277 00:23:50,860 --> 00:24:00,580 Felly, mae yna gwpl o implementations gwahanol ar gyfer hynny mewn rhai ieithoedd eraill yn ogystal. 278 00:24:02,580 --> 00:24:08,420 Dyma rai offer eraill, regex Pal - ychydig o app defnyddiol ar-lein i 279 00:24:08,420 --> 00:24:12,190 gwirio a yw eich mynegiadau rheolaidd yn cael eu cynnwys yn gywir. 280 00:24:12,190 --> 00:24:18,500 Mae yna hefyd offer standalone y gallwch redeg gan eich bwrdd gwaith 281 00:24:18,500 --> 00:24:22,100 fel Pico Ultra, ac yn ogystal â llyfrau coginio yn unig. 282 00:24:22,100 --> 00:24:25,410 Felly, os ydych yn gwneud prosiect sy'n cynnwys tunnell o ymadroddion rheolaidd 283 00:24:25,410 --> 00:24:29,810 mae'n debyg mai dyma'r lle i fynd y tu allan i gwmpas heddiw. 284 00:24:31,520 --> 00:24:35,770 Ac yna dim ond i roi syniad o ba mor gyffredin ydyw eich 285 00:24:35,770 --> 00:24:44,090 mae grep yn Unix, Perl wedi eu hadeiladu i mewn, a C mae PCRE i C. 286 00:24:44,090 --> 00:24:48,890 Ac yna yr holl ieithoedd eraill hyn hefyd becynnau mynegiad rheolaidd 287 00:24:48,890 --> 00:24:52,020 sy'n gweithredu gyda hanfod yr un gystrawen rydym yn cael blas o heddiw. 288 00:24:52,020 --> 00:24:54,790 PHP, Java, Ruby, ac yn y blaen. 289 00:24:56,080 --> 00:24:58,980 >> Google Cod Chwilio mewn gwirionedd yn werth sôn, ei fod yn un o'r 290 00:24:58,980 --> 00:25:05,720 cymharol ychydig o geisiadau i maes 'na sy'n caniatáu i'r cyhoedd i gael mynediad i 291 00:25:05,720 --> 00:25:07,800 ei gronfa ddata gan ddefnyddio ymadroddion rheolaidd. 292 00:25:07,800 --> 00:25:12,920 Felly, os ydych yn edrych ar Google Cod Chwilio gallwch ddod o hyd cod 293 00:25:12,920 --> 00:25:16,880 os ydych yn chwilio am enghraifft o sut y gallai swyddogaeth yn cael ei ddefnyddio, 294 00:25:16,880 --> 00:25:21,610 gallwch ddefnyddio mynegiant rheolaidd i ddod o hyd swyddogaeth honno yn cael ei defnyddio ym mhob math o wahanol achosion. 295 00:25:21,610 --> 00:25:28,000 Gallech chwilio am fwrite, ac yna gallwch chwilio am y faner o ysgrifennu neu ddarllen 296 00:25:28,000 --> 00:25:32,000 os ydych chi eisiau enghraifft o fwrite cael ei ddefnyddio yn yr achos hwnnw. 297 00:25:33,530 --> 00:25:37,010 Felly, yr un peth yno, a dyma rai cyfeiriadau. 298 00:25:37,010 --> 00:25:40,990 Bydd hwn ar gael ar-lein hefyd, felly yn mynd ymlaen os 299 00:25:40,990 --> 00:25:45,560 ydych am edrych ar Python, grep, Perl - 'ch jyst am gael rhywfaint o ysbrydoliaeth 300 00:25:45,560 --> 00:25:50,650 neu os ydych am i edrych yn fwy ar y ddamcaniaeth dyma rai neidio da i ffwrdd leoedd. 301 00:25:50,650 --> 00:25:53,870 Diolch yn fawr iawn. 302 00:25:58,470 --> 00:25:59,910 [CS50.TV]