Slide 1

Slide 1 text

make "make regex" QSFTFOUFECZ@makenowjust )JSPZB'VKJOBNJ BUYAPC::Fukuoka ʮਖ਼نදݱΛͭ͘ΔʯΛ ɹͭ͘Δ

Slide 2

Slide 2 text

౻࿘େ໻ (Hiroya Fujinami) ࣗݾ঺հ  w /** ࠃཱ৘ใֶݚڀॴ ͷത࢜՝ఔͷֶੜ w ઐ໳෼໺ਖ਼نදݱɾΦʔτϚτϯཧ࿦ w ࠷ۙ͸ɺΦʔτϚτϯֶश BVUPNBUBMFBSOJOH ΍ ໊໨ू߹ OPNJOBMTFU ʹؔ৺͕͋Δ w 3VCZίϛολᴷᴷ୅දతͳߩݙਖ਼نදݱͷϝϞԽʹΑΔߴ଎Խ w 4503&4ͱ͍͏ձࣾͰόΠτΛ͍ͯ͠Δ 3BJMTͰͷ8FC։ൃ 

Slide 3

Slide 3 text

!NBLF@OPX@KVTU !NBLFOPXKVTU

Slide 4

Slide 4 text

:"1$ͷࢥ͍ग़ ࣗݾ঺հ  w YAPC::Japan::Onlineʹͯ ʮ3F%P4ݕग़ͷ࠷ઌ୺SFDIFDLͷ঺հʯͱ͍͏ൃදΛͨ͠ w ͦͷͱ͖ɺຊདྷͳΒϐβ͕ಧ͘͸ͣͩͬͨͷ͕ͩ ϐβϋοτͷ഑ૹ஍Ҭ֎ͱ͍͏͜ͱͰಧ͔ͳ͔ͬͨ w ͘΍͍͠ͷͰࣗ෼ͰϐβΛങ͖ͬͯͯ৯΂͍ͯͨهԱ͕͋Δ w ࠙਌ձͰϐβ͕ग़ͨΒ৯΂ਚ͍ͨ͘͠ 

Slide 5

Slide 5 text

ਖ਼نදݱɺॻ͖͍ͨͰ͔͢ʁ

Slide 6

Slide 6 text

ୀ۶ͳ͜ͱ͸1 ʹ΍ΒͤΑ͏

Slide 7

Slide 7 text

͕ɺ ͦͷͨΊʹ͸ਖ਼نදݱΛ ॻ͔ͳ͚Ε͹͍͚ͳ͍

Slide 8

Slide 8 text

ͦ͏ͩ ʮਖ਼نදݱΛॻ͍ͯ͘ΕΔʯ ϓϩάϥϜΛॻ͜͏

Slide 9

Slide 9 text

make "make regex" QSFTFOUFECZ@makenowjust )JSPZB'VKJOBNJ BUYAPC::Fukuoka ʮਖ਼نදݱΛͭ͘ΔʯΛ ɹͭ͘Δ

Slide 10

Slide 10 text

͋ΘΑ͘͹ɺ ΦʔτϚτϯཧ࿦Λ ࢖͑Δͱ͍͍ͳ ઐ໳෼໺ͳͷͰ

Slide 11

Slide 11 text

৽ͨͳղܾࡦ ໰୊ͷ֬ೝ ϩʔυϚοϓ τʔΫͷྲྀΕ ੜ੒"* --. ཧ࿦తͳํ๏ 1FSMͰ͸ ؆୯ͳղܾࡦ 1 2 3 

Slide 12

Slide 12 text

৽ͨͳղܾࡦ ໰୊ͷ֬ೝ ϩʔυϚοϓ τʔΫͷྲྀΕ  1 3 ੜ੒"* --. ཧ࿦తͳํ๏ 1FSMͰ͸ ؆୯ͳղܾࡦ 2 2

Slide 13

Slide 13 text

৽ͨͳղܾࡦ ໰୊ͷ֬ೝ ϩʔυϚοϓ τʔΫͷྲྀΕ  1 3 ੜ੒"* --. ཧ࿦తͳํ๏ 1FSMͰ͸ ؆୯ͳղܾࡦ 2 ځ 2

Slide 14

Slide 14 text

৽ͨͳղܾࡦ ໰୊ͷ֬ೝ ϩʔυϚοϓ τʔΫͷྲྀΕ  1 3 ੜ੒"* --. ཧ࿦తͳํ๏ 1FSMͰ͸ ؆୯ͳղܾࡦ 2 ځ 2 ڀ

Slide 15

Slide 15 text

զʑͷٻΊΔͱ͜Ζ  ʮਖ਼نදݱΛॻ͍ͯ͘ΕΔʯ ϓϩάϥϜ͕ཉ͍͠ ໰୊ͷ֬ೝ

Slide 16

Slide 16 text

ීஈͲ͏΍ͬͯਖ਼نදݱΛॻ͘ʁ  ͲΜͳਖ਼نදݱ͕ ཉ͍͠ͷ͔ʁ ࢓༷ɾݴޠԽ 1 ςετέʔεΛ ߟ͑Δ 2 ࣮ࡍʹ ਖ਼نදݱΛॻ͘ 3

Slide 17

Slide 17 text

ීஈͲ͏΍ͬͯਖ਼نදݱΛॻ͘ʁ  ͲΜͳਖ਼نදݱ͕ ཉ͍͠ͷ͔ʁ ࢓༷ɾݴޠԽ 1 ςετέʔεΛ ߟ͑Δ 2 ࣮ࡍʹ ਖ਼نදݱΛॻ͘ 3 ͜ͷ෦෼Λলུ͍ͨ͠

Slide 18

Slide 18 text

ීஈͲ͏΍ͬͯਖ਼نදݱΛॻ͘ʁ  ͲΜͳਖ਼نදݱ͕ ཉ͍͠ͷ͔ʁ ࢓༷ɾݴޠԽ 1 ςετέʔεΛ ߟ͑Δ 2 ࣮ࡍʹ ਖ਼نදݱΛॻ͘ 3 ͜ͷ෦෼Λলུ͍ͨ͠ ϝʔϧΞυϨεʹϚον ͢Δਖ਼نදݱ͕ཉ͍͠ "[email protected]" "ex@[email protected]"

Slide 19

Slide 19 text

໰୊ઃఆ զʑͷٻΊΔͱ͜Ζ ʮਖ਼نදݱΛॻ͍ͯ͘ΕΔʯ ϓϩάϥϜ͕ཉ͍͠  ͦͷͨΊʹ͍࣋ͬͯΔ΋ͷ ࢖͑Δ΋ͷ ཁٻ ࡶͳ࢓༷ 1 ςετέʔε 2 ϝʔϧΞυϨεʹϚον ͢Δਖ਼نදݱ͕ཉ͍͠ "[email protected]" "ex@[email protected]"

Slide 20

Slide 20 text

৽ͨͳղܾࡦ ໰୊ͷ֬ೝ ϩʔυϚοϓ τʔΫͷྲྀΕ  1 3 ੜ੒"* --. ཧ࿦తͳํ๏ 1FSMͰ͸ ؆୯ͳղܾࡦ 2 ʮਖ਼نදݱΛॻ͘ʯ ϓϩάϥϜ͕ ཉ͍͠ ࡶͳ ࢓༷ ςετ έʔε ځ 2 ڀ

Slide 21

Slide 21 text

Regexp::Assemble 1FSMͰ͸ w Regexp::Assembleͱ͍͏Ϟδϡʔϧ͕͋Δ w ෳ਺ͷจࣈྻ΍ਖ਼نදݱΛ·ͱΊͯͭͷਖ਼نදݱʹͰ͖Δ  use Regexp::Assemble; my $r = Regexp::Assemble->new; $r->add('[email protected]'); $r->add('[email protected]'); $r->add('[email protected]'); print $r->re; (?:aaa|bbb|ccc)@example.com

Slide 22

Slide 22 text

Regexp::Assembleͷ໰୊఺ w ϧʔϓ +΍* ΛࣗಈͰ࡞ͬͯ͘Εͳ͍ w ʮϚονͯ͠΄͘͠ͳ͍ςετέʔεʯʹରԠ͍ͯ͠ͳ͍  use Regexp::Assemble; my $r = Regexp::Assemble->new; $r->add('[email protected]'); $r->add('[email protected]'); $r->add('[email protected]'); print $r->re; [a-c][email protected] ຊ౰͸͜͏ͳͬͯ΄͍͠ [email protected] ͜Ε͸΍Γ͗ͩ͢ͱ఻͍͑ͨ

Slide 23

Slide 23 text

৽ͨͳղܾࡦ ໰୊ͷ֬ೝ ϩʔυϚοϓ τʔΫͷྲྀΕ  1 3 ੜ੒"* --. ཧ࿦తͳํ๏ 1FSMͰ͸ ؆୯ͳղܾࡦ Regexp::Assemble 2 ʮਖ਼نදݱΛॻ͘ʯ ϓϩάϥϜ͕ ཉ͍͠ ࡶͳ ࢓༷ ςετ έʔε ځ 2 ڀ

Slide 24

Slide 24 text

ೳಈతΦʔτϚτϯֶश ཧ࿦తͳํ๏ w ςετέʔε͔Β༗ݶঢ়ଶΦʔτϚτϯΛߏங͢Δ໰୊Λ ʮೳಈతΦʔτϚτϯֶश QBTTJWFBVUPNBUBMFBSOJOH ʯͱݺͿ w ୅දతͳΞϧΰϦζϜ31/* 3FHVMBS1PTJUJWFBOE/FHBUJWF*OGFSFODF  0ODJB(BSDÍB *OGFSSJOHSFHVMBSMBOHVBHFTJOQPMZOPNJOBMVQEBUFUJNF  111, 000, 11101, 01 0, 1, 00, 01 Ϛονͯ͠΄͍͠จࣈྻ Ϛονͯ͠΄͘͠ͳ͍จࣈྻ 0 0 0 1 1 1 (1ͷݸ਺-0ͷݸ਺)%3=0 

Slide 25

Slide 25 text

31/*ͷΞΠσΟΞ (1/4) ཧ࿦తͳํ๏ w ʮϚονͯ͠΄͍͠จࣈྻʯ͔ΒQSF fi YUSFFͷΦʔτϚτϯΛ࡞Δ  111, 000, 11101, 01 ε 1 1 11 111 0 01 00 000 1110 11101 1 1 0 1 0 0 1 0

Slide 26

Slide 26 text

31/*ͷΞΠσΟΞ (2/4) ཧ࿦తͳํ๏ w ͭͷঢ়ଶΛϚʔδͯ͠Έͯɺ݁ՌͷΦʔτϚτϯ͕ ʮϚονͯ͠΄͘͠ͳ͍จࣈྻʯΛຬ͔ͨ͢ςετ  ε 1 1 11 111 0 01 00 000 1110 11101 1 1 0 1 0 0 1 0 0, 1, 00, 01

Slide 27

Slide 27 text

31/*ͷΞΠσΟΞ (2/4) ཧ࿦తͳํ๏ w ͭͷঢ়ଶΛϚʔδͯ͠Έͯɺ݁ՌͷΦʔτϚτϯ͕ ʮϚονͯ͠΄͘͠ͳ͍จࣈྻʯΛຬ͔ͨ͢ςετ  ε 1 1 11 111 0 01 00 000 1110 11101 1 1 0 1 0 0 1 0 0, 1, 00, 01

Slide 28

Slide 28 text

31/*ͷΞΠσΟΞ (2/4) ཧ࿦తͳํ๏ w ͭͷঢ়ଶΛϚʔδͯ͠Έͯɺ݁ՌͷΦʔτϚτϯ͕ ʮϚονͯ͠΄͘͠ͳ͍จࣈྻʯΛຬ͔ͨ͢ςετ  ε 1 1 11 111 0 01 00 000 1110 11101 1 1 0 1 0 0 1 0 0, 1, 00, 01 Ϛονͯ͠΄͘͠ͳ͍ͷʹ Ϛονͯ͠͠·͏

Slide 29

Slide 29 text

31/*ͷΞΠσΟΞ (3/4) ཧ࿦తͳํ๏ w ʮϚονͯ͠΄͘͠ͳ͍จࣈྻʯΛຬͨ͢ʮ্ख͍ϚʔδʯΛ୳͢  ε 1 1 11 111 0 01 00 000 1110 11101 1 1 0 1 0 0 1 0 0, 1, 00, 01

Slide 30

Slide 30 text

31/*ͷΞΠσΟΞ (3/4) ཧ࿦తͳํ๏ w ʮϚονͯ͠΄͘͠ͳ͍จࣈྻʯΛຬͨ͢ʮ্ख͍ϚʔδʯΛ୳͢  ε 1 1 11 111 0 01 00 000 1110 11101 1 1 0 1 0 0 1 0 0, 1, 00, 01

Slide 31

Slide 31 text

31/*ͷΞΠσΟΞ (4/4) ཧ࿦తͳํ๏ w ʮ্ख͍ϚʔδʯΛ܁Γฦ͍ͯ͘͠ͱɺ໨తͷΦʔτϚτϯ͕ಘΒΕΔ  0, 1, 00, 01 111, 000, 11101, 01 Ϛονͯ͠΄͍͠จࣈྻ Ϛονͯ͠΄͘͠ͳ͍จࣈྻ 0 0 0 1 1 1 (1ͷݸ਺-0ͷݸ਺)%3=0

Slide 32

Slide 32 text

31/*ͷ໰୊఺ w ʮΦʔτϚτϯཧ࿦͸͍͢͝ʂʯͱࢥ͑Δ͕ʜʜ 

Slide 33

Slide 33 text

31/*ͷ໰୊఺ w ʮΦʔτϚτϯཧ࿦͸͍͢͝ʂʯͱࢥ͑Δ͕ʜʜ  ΦʔτϚτϯ͸ ਖ਼نදݱͰ͸ͳ͍

Slide 34

Slide 34 text

ΦʔτϚτϯͱਖ਼نදݱͷؔ܎ େֶͷߨٛͷ෮श w ʮΦʔτϚτϯͱਖ਼نදݱ͸૬ޓʹม׵Մೳʯ ,MFFOFʹΑΔ  w ͨͩ͠ɺΦʔτϚτϯΛ ਓ͕ؒಡΈ΍͍͢ਖ਼نදݱʹม׵͢Δ͜ͱ͸೉͍͠  0 0 0 1 1 1 /\A(?:01|(?:1|00)(?:10)*(?:0|11)| (?:(?:01|(?:1|00)(?:10)*(?:0|11))?) (?:(?:(?:01|(?:1|00)(?:10)*(?:0| 11))?)*)(?:(?:01|(?:1|00) (?:10)*(?:0|11))?))?\z/ (1ͷݸ਺-0ͷݸ਺)%3=0 ಡΊͳ͍ɾϝϯςͰ͖Μ

Slide 35

Slide 35 text

1FSMͷ࣮૷΋ ཧ࿦తͳ੒Ռ΋ແྗͳͷ͔ʜʜ

Slide 36

Slide 36 text

ʻݺΜͩʁ

Slide 37

Slide 37 text

͍ͬͦ"*ʹཔͬͯΈΔ ੜ੒"* --. w ʮϓϩάϥϜΛॻ͘ϓϩάϥϜʯͱݴ͑͹ੜ੒"* w ࣗવݴޠ͔ΒͦΕͬΆ͍ਖ਼نදݱΛ࡞ͬͯ͘Ε͍ͯ͢͝  ϝʔϧΞυϨεʹϚον ͢Δਖ਼نදݱ͕ཉ͍͠ /^\S+@\S+\.\S+$/

Slide 38

Slide 38 text

"*ʹཔͬͨͱ͖ͷ໰୊఺ (1/2) ੜ੒"* --. w ςετέʔεΛຬ͍ͨͯ͠Δ͔ͷνΣοΫ͸ ࣗ෼Ͱ͢Δඞཁ͕͋Δ  /^\S+@\S+\.\S+$/ "ex@[email protected]" ʹϚονͯ͠͠·͏ʂ

Slide 39

Slide 39 text

"*ʹཔͬͨͱ͖ͷ໰୊఺ (2/2) ੜ੒"* --. w 3F%P4 ਖ਼نදݱͷ੬ऑੑ ͷՄೳੑ͕͋Δ w ؔ࿈ݚڀ4JEEJRFUBM 6OEFSTUBOEJOH3FHVMBS&YQSFTTJPO%FOJBMPG4FSWJDF 3F%P4  *OTJHIUTGSPN--.(FOFSBUFE3FHFYFTBOE%FWFMPQFS'PSVNT *$1$  /^\S+@\S+\.\S+$/ "@." x 2048 . "\n" ͷϚονʹඵ΋͔͔Δ    ⽘͘Β͍͕੬ऑ

Slide 40

Slide 40 text

3F%P4ͱ͸ 3FHVMBS&YQSFTTJPO%FOJBMPG4FSWJDF w ਖ਼نදݱͱಛఆͷจࣈྻͷϚονΛ͢Δͱ͖ʹ ҟৗͳ͕͔͔࣌ؒͬͯ͠·͍ɺαʔϏεͷఏڙʹӨڹ͕ग़Δ੬ऑੑ  $ time node -e '/^(a|a)*$/.exec("a".repeat(29) + "b")' 34.65s user 0.26s system 99% cpu 35.249 total

Slide 41

Slide 41 text

3F%P4ͱ͸ 3FHVMBS&YQSFTTJPO%FOJBMPG4FSWJDF w ਖ਼نදݱͱಛఆͷจࣈྻͷϚονΛ͢Δͱ͖ʹ ҟৗͳ͕͔͔࣌ؒͬͯ͠·͍ɺαʔϏεͷఏڙʹӨڹ͕ग़Δ੬ऑੑ w ৄ͘͠͸YAPC::Japan::Onlineͷࣗ෼ͷൃදΛ  IUUQTTQFBLFSEFDLDPNNBLFOPXKVTUTUBUFPGUIFBSUPG SFEPTEFUFDUJPOFEBEFDDFCBBE SFEPTSFDIFDL ࠓ͙͢ݕࡧʂ

Slide 42

Slide 42 text

1FSMͷ࣮૷΋μ ϝɺཧ࿦΋μ ϝɺ ੜ੒"*΋μ ϝ ͳΒɺͲ͏͢Ε͹͍͍Μͩ

Slide 43

Slide 43 text

࣮͸ཧ࿦͸ͦΜͳʹγϣϘ͘ͳ͍ w ਖ਼نදݱͷ߹੒ TZOUIFTJ[F ɾम෮ SFQBJS ͱ͍͏໰୊͕ ͱͯ΋׆ൃʹݚڀ͞Ε͍ͯΔ w ਖ਼نදݱͷ߹੒ɾम෮ςετέʔεΛຬͨ͢ਖ਼نදݱΛͭ͘Δ w ؔ࿈ݚڀ<1BOFUBM 0014-"> <-JFUBM "4&>  <-JFUBM 64&/*9> <$IJEB5FSBVDIJ 41>  <$IJEB5FSBVDIJ 1-%*> <4VOHFUBM > ʜʜ 

Slide 44

Slide 44 text

࣮͸ཧ࿦͸ͦΜͳʹγϣϘ͘ͳ͍ w ਖ਼نදݱͷ߹੒ TZOUIFTJ[F ɾम෮ SFQBJS ͱ͍͏໰୊͕ ͱͯ΋׆ൃʹݚڀ͞Ε͍ͯΔ w ਖ਼نදݱͷ߹੒ɾम෮ςετέʔεΛຬͨ͢ਖ਼نදݱΛͭ͘Δ w ؔ࿈ݚڀ<1BOFUBM 0014-"> <-JFUBM "4&>  <-JFUBM 64&/*9> <$IJEB5FSBVDIJ 41>  <$IJEB5FSBVDIJ 1-%*> <4VOHFUBM > ʜʜ 

Slide 45

Slide 45 text

ਖ਼نදݱͷ߹੒ɾम෮ͷΞΠσΟΞ w ਖ਼نදݱͷςϯϓϨʔτΛ୳ࡧͰվྑ͍ͯ͘͠ w ਖ਼نදݱͷςϯϓϨʔτ͸ϋί˘ΛؚΉ ϋί˘͸ͲΜͳਖ਼نදݱͰ΋ೖΕΔ͜ͱ͕Ͱ͖Δ݀ ϓϨʔεϗϧμʔ  w ϋί˘ʹจࣈΫϥεΛೖΕͯ ςετέʔεΛຬ͔ͨ͢Ͳ͏͔ΛνΣοΫ͢Δ w μϝͳ৔߹ɺϋί˘Λ͞Βʹ۩ମతͳਖ਼نදݱͰஔ͖׵͑ͯ୳ࡧ  <$IJEB5FSBVDIJ 41> <$IJEB5FSBVDIJ 1-%*>

Slide 46

Slide 46 text

ਖ਼نදݱͷ߹੒ɾम෮ͷྫ (1/7)  ab, cd, abab, ccdd ac, bc, ad, bd Ϛονͯ͠΄͍͠จࣈྻ Ϛονͯ͠΄͘͠ͳ͍จࣈྻ ୳ࡧΩϡʔ •/□/ ॳظঢ়ଶ

Slide 47

Slide 47 text

ਖ਼نදݱͷ߹੒ɾम෮ͷྫ (2/7)  ab, cd, abab, ccdd ac, bc, ad, bd Ϛονͯ͠΄͍͠จࣈྻ Ϛονͯ͠΄͘͠ͳ͍จࣈྻ ୳ࡧΩϡʔ •/□/ ϋί˘ͭʹ จࣈΫϥεΛೖΕΔ͚ͩͰ ςετέʔεΛຬͨ͢ͷ͸ ϜϦ

Slide 48

Slide 48 text

ਖ਼نදݱͷ߹੒ɾम෮ͷྫ (3/7)  ab, cd, abab, ccdd ac, bc, ad, bd Ϛονͯ͠΄͍͠จࣈྻ Ϛονͯ͠΄͘͠ͳ͍จࣈྻ ୳ࡧΩϡʔ •/□|□/ •/□□/ •/□*/ ϋί˘ΛΑΓ۩ମతͳ ਖ਼نදݱʹஔ͖׵͑ͯ ୳ࡧΩϡʔʹ௥Ճ

Slide 49

Slide 49 text

ਖ਼نදݱͷ߹੒ɾम෮ͷྫ (4/7)  ab, cd, abab, ccdd ac, bc, ad, bd Ϛονͯ͠΄͍͠จࣈྻ Ϛονͯ͠΄͘͠ͳ͍จࣈྻ ୳ࡧΩϡʔ •/□|□/ •/□□/ •/□*/ /□|□/΋/□□/΋ จࣈΫϥεΛೖΕͯ ςετέʔεΛຬͨ͢ͷ͸ ϜϦ

Slide 50

Slide 50 text

ਖ਼نදݱͷ߹੒ɾम෮ͷྫ (5/7)  ab, cd, abab, ccdd ac, bc, ad, bd Ϛονͯ͠΄͍͠จࣈྻ Ϛονͯ͠΄͘͠ͳ͍จࣈྻ ୳ࡧΩϡʔ •/□|□/ •/□□/ •/□*/ /[a-d]*/ͱ͢Δͱ Ұݟ͍͚ͦ͏͕ͩ Ϛονͯ͠΄͘͠ͳ͍ จࣈྻʹϚονͯ͠͠·͏

Slide 51

Slide 51 text

ਖ਼نදݱͷ߹੒ɾम෮ͷྫ (6/7)  ab, cd, abab, ccdd ac, bc, ad, bd Ϛονͯ͠΄͍͠จࣈྻ Ϛονͯ͠΄͘͠ͳ͍จࣈྻ ୳ࡧΩϡʔ •/□*|□*/ •/□*□*/ •… ࠶౓ɺϋί˘Λ ۩ମతͳਖ਼نදݱʹ ஔ͖׵͑ͯ୳ࡧ

Slide 52

Slide 52 text

ਖ਼نදݱͷ߹੒ɾम෮ͷྫ (7/7)  ab, cd, abab, ccdd ac, bc, ad, bd Ϛονͯ͠΄͍͠จࣈྻ Ϛονͯ͠΄͘͠ͳ͍จࣈྻ ୳ࡧΩϡʔ •/□*|□*/ •/□*□*/ •… /[ab]*|[cd]*/ͱ͢Δ ͜ͱͰ໨తͷਖ਼نදݱʹʂ

Slide 53

Slide 53 text

ϋί˘ͷຒΊํ w ϋί˘ΛຒΊΔจࣈΫϥε͸4"5ιϧόΛ࢖ܾͬͯఆ͢Δ w ςετέʔεͰਖ਼نදݱϚονΛͯ͠ɺ ˘ʹ౰ͨͬͨΒ࿦ཧࣜΛ௥Ճ͢ΔΠϝʔδ  <$IJEB5FSBVDIJ 41> <$IJEB5FSBVDIJ 1-%*> ˘ c˘  Ϛονͯ͠΄͍͠ ab (□1 = a ∧ □1 = b) ∨ (□2 = a ∧ □2 = b) Ϛονͯ͠΄͘͠ͳ͍ bc ¬(□1 = b ∧ □1 = c) ∧ ¬(□2 = b ∧ □2 = c)

Slide 54

Slide 54 text

4"5ιϧόΛ࢖͏ͱ͍͍͜ͱ w ୯ʹϋί˘ʹจࣈΫϥεΛຒΊΔ͚ͩͰͳ͘ɺ ௥Ճͷ੍໿ΛೖΕΔ͜ͱͰ༷ʑͳ໰୊ʹରԠͰ͖Δ w ྫ͑͹ɺ෼ذ|΍܁Γฦ͠*͕ᐆດʹͳΒͳ͍ a|aͷΑ͏ͳɺࠨӈͲͪΒͰ΋BͰϚονͯ͠͠·͏͜ͱ͕ͳ͍  ͱ͍͏੍໿ΛೖΕΔ͜ͱͰɺ3F%P4͕ى͜Βͳ͍͜ͱ͕อূͰ͖Δ  <$IJEB5FSBVDIJ 41> <$IJEB5FSBVDIJ 1-%*> ˘c 3F%P4ରࡦ੍໿ □1 ≠ a ∧ □1 ≠ b ˘c˘ □1 ≠ □2

Slide 55

Slide 55 text

ϋί˘Λ࢖ͬͨํ๏ͷ໰୊఺ w ϋί˘͔ͭΒ࢝ΊΔͱɺ໨తͷਖ਼نදݱʹḷΓண͘·Ͱʹ ͱͯ΋͕͔͔࣌ؒΔ w ςετέʔεΛຬͨ͢࠷খͷਖ਼نදݱΛ୳͢໰୊͸ /1IBSEͰ͋Δ͜ͱ͕஌ΒΕ͍ͯΔ  ˘ ˘  ˘c˘ ˘˘  ˘c˘   ˘˘  ˘˘˘  ˘c˘ ˘ ˘ ˘c˘  ˘ ˘ ʜʜ

Slide 56

Slide 56 text

࿕ใ࣮͸ϋί˘͔ͭΒ ࢝Ίͳͯ͘΋ྑ͍ ਖ਼نදݱͷम෮ SFQBJS ΞϧΰϦζϜͰ΋͋ΔͷͰ

Slide 57

Slide 57 text

ʮ࠷ॳͷਖ਼نදݱʯ͕͋Ε͹͍͍ ਖ਼نදݱͷम෮ SFQBJS w ϋί͔ͭΒ࢝ΊΔ୅ΘΓʹʮ࠷ॳͷਖ਼نදݱʯΛ༩͑Δ͜ͱ͕Ͱ͖Δ w ʮ࠷ॳͷਖ਼نදݱʯͷจࣈɾจࣈΫϥεͷ෦෼Λ ϋί˘Ͱஔ͖׵͍͑ͯ͘͜ͱͰɺ໨తͷਖ਼نදݱʹۙ෇͍͍ͯ͘  /^\S+@\S+\.\S+$/ /^□+@□+\.□+$/ /^[^@]+@[^.@]+\.[^@]+$/

Slide 58

Slide 58 text

ʮ࠷ॳͷਖ਼نදݱʯΛ "*ʹॻ͔ͤΕ͹͍͍ͷͰ͸ʁ

Slide 59

Slide 59 text

৽ͨͳղܾࡦ ໰୊ͷ֬ೝ ϩʔυϚοϓ τʔΫͷྲྀΕ  1 3 ੜ੒"* --. ཧ࿦తͳํ๏ 1FSMͰ͸ ؆୯ͳղܾࡦ Regexp::Assemble RPNI ReDoSͳͲͷ໰୊ 2 ʮਖ਼نදݱΛॻ͘ʯ ϓϩάϥϜ͕ ཉ͍͠ ࡶͳ ࢓༷ ςετ έʔε ੜ੒AI (LLM) Ͱ ʮ࠷ॳͷਖ਼نදݱʯ Λੜ੒ ਖ਼نදݱͷम෮ ΞϧΰϦζϜ ځ 2 ڀ

Slide 60

Slide 60 text

ϘΫ͕ߟ͑ͨ࠷ڧͷʮਖ਼نදݱΛॻ͍ͯ͘ΕΔʯ γεςϜͷΠϝʔδਤ  ͜͏͍͏ ਖ਼نදݱ͕ ཉ͍͠ ͜͏͍͏จࣈྻʹ Ϛονͯ͠ ΄͍͠ɾ΄͘͠ͳ͍ ਖ਼نදݱम෮ ΞϧΰϦζϜ ੜ੒"* ࠷ॳͷਖ਼نදݱ ໨తͷਖ਼نදݱ ࣗવݴޠʹΑΔ࢓༷ ςετέʔε

Slide 61

Slide 61 text

Ͱɺ࣮૷͸ʁ

Slide 62

Slide 62 text

Ӷҙɺ࡞੒த ؒʹ߹͍·ͤΜͰͨ͠ʜʜ

Slide 63

Slide 63 text

࣮૷͕ؒʹ߹Θͳ͔ͬͨཧ༝ ݴ͍༁ w ਖ਼نදݱͷम෮ͷݚڀ <$IJEB5FSBVDIJ 41> <$IJEB5FSBVDIJ 1-%*> ͷ࣮૷ͷιʔείʔυ͕ެ։͞Ε͍ͯͳ͍ ࣮ݧΛ࠶ݱ͢ΔͨΊͷԾ૝؀ڥͷΠϝʔδ͚ͩ͋Δ  w ݱ࣮ੈքͷਖ਼نදݱʹ࢖͑ΔͨΊͷύʔα΍จࣈΫϥεͷ࣮૷͕େม w ࠷ۙ๩͔ͬͨ͠ υΠπʹߦͬͨΓΠϯυʹߦͬͨΓ͍ͯͨ͠  IUUQTHJUIVCDPNTQPOTPSTNBLFOPXKVTU (JU)VCεϙϯαʔืूத

Slide 64

Slide 64 text

఻͔͑ͨͬͨ͜ͱ ·ͱΊ w ੜ੒"*ʹਖ਼نදݱΛॻ͔ͤΔͷ΋͍͍͚Ͳɺ3F%P4͕ى͜Βͳ͍͔ɺ ຊ౰ʹ໨తͷจࣈྻʹϚον͢Δɾ͠ͳ͍͔͸νΣοΫ͠Α͏ʂ 

Slide 65

Slide 65 text

఻͔͑ͨͬͨ͜ͱ ·ͱΊ w ੜ੒"*ʹਖ਼نදݱΛॻ͔ͤΔͷ΋͍͍͚Ͳɺ3F%P4͕ى͜Βͳ͍͔ɺ ຊ౰ʹ໨తͷจࣈྻʹϚον͢Δɾ͠ͳ͍͔͸νΣοΫ͠Α͏ʂ w ҰൠͷϓϩάϥϜͩͱˢͷ͜ͱ͸஍ಓʹ΍Δ͔͠ͳ͍ ͚ΕͲɺਖ਼نදݱͳΒ৭ʑͱݚڀ͕͞Ε͍ͯΔͷͰɺ ཧ࿦తʹղܾͰ͖Δ͜ͱ΋͋Δ 

Slide 66

Slide 66 text

఻͔͑ͨͬͨ͜ͱ ·ͱΊ w ੜ੒"*ʹਖ਼نදݱΛॻ͔ͤΔͷ΋͍͍͚Ͳɺ3F%P4͕ى͜Βͳ͍͔ɺ ຊ౰ʹ໨తͷจࣈྻʹϚον͢Δɾ͠ͳ͍͔͸νΣοΫ͠Α͏ʂ w ҰൠͷϓϩάϥϜͩͱˢͷ͜ͱ͸஍ಓʹ΍Δ͔͠ͳ͍ ͚ΕͲɺਖ਼نදݱͳΒ৭ʑͱݚڀ͕͞Ε͍ͯΔͷͰɺ ཧ࿦తʹղܾͰ͖Δ͜ͱ΋͋Δ w ָ͍͠ਖ਼نදݱϥΠϑΛʂ 

Slide 67

Slide 67 text

͔͜͜Β͸࣭ٙԠ౴༻

Slide 68

Slide 68 text

31/*ͷྫͰग़͖ͯͨਖ਼نදݱ w ࣮ࡍʹ͸΋ͬͱ୹͍΋ͷʹͰ͖Δ w ͕ɺͦΕʹ͸ৄࡉͳΦʔτϚτϯͷߏ଄ͷ෼ੳ͕ඞཁͰɺ ػցతʹ΍Δͷ͸؆୯Ͱ͸ͳ͍ ͱࢥ͏  0 0 0 1 1 1 /\A(0(01)*(1|00)|1(10)*(0|11))*\z/ (1ͷݸ਺-0ͷݸ਺)%3=0

Slide 69

Slide 69 text

ݱ࣮ͷਖ਼نදݱʹͲͷఔ౓ରԠͰ͖Δʁ w ઌߦݚڀ<$IJEB5FSBVDIJ 41> <$IJEB5FSBVDIJ 1-%*> ͸࣮ੈքͷਖ਼نදݱΛର৅ʹ͍ͯ͠Δ w ͭ·ΓઌಡΈɾޙಡΈ΍ޙํࢀরΛؚΉਖ਼نදݱʹରͯ͠΋ ͪΌΜͱಈ࡞͢ΔΑ͏ʹͳ͍ͬͯΔ w ͞ΒʹɺςετέʔεʹΩϟϓνϟͷ৘ใ·ͰೖΕΔͱɺ ͦ͜·Ͱߟྀͨ͠ਖ਼نදݱΛ࡞Δ͜ͱ͕Ͱ͖Δ 

Slide 70

Slide 70 text

"*ʹΑΔʮ࠷ॳͷਖ਼نදݱʯͱम෮ͷίετ w ʮ࠷ॳͷਖ਼نදݱʯΛ༩͑ͨ৔߹Ͱ΋ɺ ໰୊ͱͯ͠͸/1IBSEͰ͋Δ͜ͱ͸มΘΒͳ͍ w ໨తͷਖ਼نදݱʹ͚ۙΕ͹͍ۙ΄Ͳ୳ࡧ͸ૣ͘ऴΘΔͷͰɺ "*ͰͳΔ΂͘໨తͷ΋ͷʹ͍ۙʮ࠷ॳͷਖ਼نදݱʯ͕ಘΒΕΕ͹ɺ म෮ΞϧΰϦζϜ΋ૣ͍ஈ֊ͰऴΘΔ͸ͣɺͱ͍͏ظ଴͕͋Δ 

Slide 71

Slide 71 text

ݱࡏͷਐḿঢ়گ w ༷ʑͳਖ਼نදݱ࣮૷ +BWB4DSJQU 1FSM 3VCZ 1ZUIPO /&5 ʹରԠͰ͖Δ ਖ਼نදݱͷύʔα͸Ͱ͖͍ͯΔ w จࣈΫϥεͳͲͷࡉ͔ͳڍಈ͕·࣮ͩ૷Ͱ͖͓ͯΒͣɺ म෮ΞϧΰϦζϜͷ࣮૷͕࢝ΊΒΕ͍ͯͳ͍ w म෮ΞϧΰϦζϜࣗମ͸ͦ͜·Ͱେม͡Όͳͦ͞͏