$30 off During Our Annual Pro Sale. View Details »

正規表現苦手なんです...

 正規表現苦手なんです...

Regex Festa
https://opt.connpass.com/event/140566/

のLTで使った資料です!

Nobuyuki Nishiyama

October 18, 2019
Tweet

More Decks by Nobuyuki Nishiyama

Other Decks in Programming

Transcript

  1. 3FHFY'FTUB
    ਖ਼نදݱۤखͳΜͰ͢ʜ
    ΅ͬͪήʔϜσϕϩού
    ੢ࢁ৴ߦɹ

    View Slide

  2. ͸͡Ίʹ
    ͑Β͍ͱ͜ʹདྷͪ·ͬͨͩʜ

    View Slide


  3. ࠓճͷ͓୊

    View Slide

  4. ਖ਼نදݱͱͷग़ձ͍
    ΨϥέʔͷαΠτΛ࡞͍ͬͯΔ࣌ʹ
    ʮೖྗ͞Εͨจࣈྻ͸ϝʔϧΞυϨε͔ʁʯ
    Λ൑ఆ͢Δඞཁ͕ੜͨ͡ʂ

    View Slide

  5. ਖ਼نදݱͱͷग़ձ͍
    ։ൃݴޠ͸1FSMɻ

    View Slide

  6. ਖ਼نදݱͱͷग़ձ͍
    ʮ1FSMϝϞʯͱ͍͏αΠτͰݟͭ
    ͚ͨʂ
    IUUQXXXEJOPSKQdPI[BLJQFSMIUN

    View Slide

  7. View Slide


  8. $mail_regex =
    q{(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\} .
    q{\[\]\000-\037\x80-\xff])|"[^\\\\\x80-\xff\n\015"]*(?:\\\\[^\x80-\xff][} .
    q{^\\\\\x80-\xff\n\015"]*)*")(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x} .
    q{80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])|"[^\\\\\x80-} .
    q{\xff\n\015"]*(?:\\\\[^\x80-\xff][^\\\\\x80-\xff\n\015"]*)*"))*@(?:[^(} .
    q{\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\0} .
    q{00-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[^\x80-\xff])*} .
    q{\])(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,} .
    q{;:".\\\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[} .
    q{^\x80-\xff])*\]))*};

    View Slide


  9. Ҿ͍ͨɻ

    View Slide

  10. ٸ͕͹ճΕ

    View Slide

  11. ٸ͕͹ճΕ
    ࢼߦࡨޡͭͭ͠ɺ
    )5.-λάͷॻ͖׵͑ͱ͔ɺ
    จࣈྻஔ׵ͱ͔͕Ͱ͖ΔΑ͏ʹͳͬͨʂ

    View Slide

  12. ָ͘͠ͳ͖ͬͯͨॴͰ
    ͦͷޙ1FSM͔Β཭Εɺ
    0CKFDUJWF$΍$Ͱॻ͘ɻ

    View Slide


  13. &NBDTͰ࢖͏΋͙͢๨ΕΔʜ

    View Slide


  14. $ʹͯਖ਼نදݱαϙʔτʂ

    View Slide


  15. ਖ਼نදݱͷ࢓༷͕Θ͔ΒΜʜ

    View Slide

  16. ௐࠪΛଓ͚ͨ݁Ռ
    &$."4DSJQUͷਖ਼نදݱͷ࢓༷
    ͱ΄΅ಉ͡Β͍͠ʜ

    View Slide


  17. &$."4DSJQUͬͯԿʁ

    View Slide


  18. ࠷ۙ+BWB4DSJQUҊ݅Λܦͯ
    Α͏΍͘ཧղʹࢸͬͨʂ

    View Slide

  19. .%/࠷ߴͰ͢

    View Slide


  20. ࢓༷͸ͳΜͱͳ͘Θ͔ͬͨ

    View Slide

  21. ·ͩ͜ΕΛॻ͚Δؾ͕͠ͳ͍
    $mail_regex =
    q{(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\} .
    q{\[\]\000-\037\x80-\xff])|"[^\\\\\x80-\xff\n\015"]*(?:\\\\[^\x80-\xff][} .
    q{^\\\\\x80-\xff\n\015"]*)*")(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x} .
    q{80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])|"[^\\\\\x80-} .
    q{\xff\n\015"]*(?:\\\\[^\x80-\xff][^\\\\\x80-\xff\n\015"]*)*"))*@(?:[^(} .
    q{\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\0} .
    q{00-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[^\x80-\xff])*} .
    q{\])(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,} .
    q{;:".\\\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[} .
    q{^\x80-\xff])*\]))*};

    View Slide

  22. ͱݴ͏༁Ͱʜ
    ೔ʑͷ܇࿅ํ๏ͱ͔ίπͱ͔
    ڭ͍͑ͯͩ͘͞ʂ

    View Slide

  23. w5XJUUFS!NJOHBNF
    w'BDFCPPLNJOHBNF
    w(JU)VCUFLOJTIJ
    ͓͠·͍
    ΞϓϦ޷ධ഑৴தʂ

    View Slide